Вызов jQuery $.ajax API GitHub Oauth возвращает неопознанную ошибку
Прежде всего это код:
var requestAuthUri = 'https://github.com/login/oauth/access_token';
var ajaxArgs = {
type : 'POST',
url : requestAuthUri,
headers : {
'Accept' : 'application/json'
},
data : {
'client_id' : this.args['client_id'],
'client_secret' : this.args['client_secret'],
'code' : queryVars['code']
},
dataType : 'json',
error : function( jqXHR, textStatus, errorThrown ) {
console.log(errorThrown);
alert( textStatus + ' : ' + errorThrown );
}
};
console.log(ajaxArgs);
$.ajax( ajaxArgs ).done( function( response ) {
console.log( response );
});
Это заголовки ответа сервера:
HTTP/1.1 200 OK
Server: GitHub.com
Date: Mon, 01 Jul 2013 08:42:09 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Status: 200 OK
Cache-Control: private, max-age=0, must-revalidate
Strict-Transport-Security: max-age=2592000
X-Frame-Options: deny
Set-Cookie: logged_in=no; domain=.github.com; path=/; expires=Fri, 01-Jul-2033 08:42:09 GMT; HttpOnly
X-Runtime: 18
Etag: "c4d5365a37fa466698cb5dc6e66f61e3"
Vary: Accept-Encoding
Content-Encoding: gzip
И это заголовки клиента:
POST /login/oauth/access_token HTTP/1.1
Host: github.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: application/json
Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://site.it/app/?code=xxxxxxxxxxxx
Content-Length: 111
Origin: http://site.it
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Проблема в том, что содержимое тела пустое, $.ajax вызывает неопознанную (empty errorThrown) ошибку, и я пытаюсь выяснить, почему.
Что я уже пробовал:
- переход от json к xml и тексту dataType
- отправка данных как
application/json
вместоapplication/x-www-form-urlencoded
- установите для crossDomain значение true
Мне не повезло?!:)
1 ответ
Убедитесь, что queryVars['code'] действительно содержит правильный код, полученный из GitHub. Затем вместо этого попробуйте использовать text/plain в качестве ответа и пропустите заголовок Accept, чтобы посмотреть, получите ли вы какой-либо ответ.
Полученная ошибка в основном говорит вам, что вы получили искаженный JSON-ответ от сервера. Поэтому попробуйте сначала получить базовый ответ, а затем переходите к его получению в формате JSON.