次の設定を使用して、Google Contacts APIにajaxリクエストを送信しようとしています。
$.ajax({
url: "https://www-opensocial.googleusercontent.com/api/people/@me/@all",
dataType: 'jsonp',
data: {
alt: 'json-in-script'
},
headers: {
'Authorization': 'Bearer ' + token
},
success: function(data, status) {
return console.log("The returned data", data);
}
});
しかし、認証ヘッダーは設定されていないようです。何か案は?
最近同じ問題がありました。これを試して:
$.ajax({
url: "https://www-opensocial.googleusercontent.com/api/people/@me/@all",
dataType: 'jsonp',
data: {
alt: 'json-in-script'
},
success: function(data, status) {
return console.log("The returned data", data);
},
beforeSend: function(xhr, settings) { xhr.setRequestHeader('Authorization','Bearer ' + token); }
});
編集:JSONPではできないようです。 JSONP要求のHTTPヘッダーの変更
クロスドメインリクエストで認証が必要な場合、何らかのプロキシサーバーを使用する必要があります。
dataType: jsonp
は、DOMに追加されるスクリプトから実際に作成されるHTTPリクエストになります。ヘッダーは$.ajax
は使用されません。
OAUTH2 RESTリソースのほとんどは、リクエストURLの一部としてaccess_tokenパラメーターを受け入れるようです
http://self-issued.info/docs/draft-ietf-oauth-v2-bearer.html#query-param
代わりに、次のコードを試してください。
$.ajax({
dataType: 'jsonp',
url: url,
data: {
'access_token':token.access_token
},
jsonpCallback: 'thecallback',
success: function(data){
_cb(data);
},
error: function(d){
_cb(d);
}
});