Google Api get access_token запрос возвращает invalid_request - PullRequest
1 голос
/ 18 марта 2012

Я пытаюсь получить access_token от Google APi, используя javascript и всегда получаю сообщение об ошибке: invalid_request. Вот мой код:

var options = {
    url: tokenURL,
    type: "POST",
    headers: { "Content-type": "application/x-www-form-urlencoded"},
    dataType: "json",
    data: {
        "code":successCode,
        "client_id": clietId,
        "client_secret": clientSecret,
        "grant_type": "authorization_code",
        "redirect_url": "urn:ietf:wg:oauth:2.0:oob"
    },
    complete: function (e) {
        alert(e.status);
    },
};

$.ajax(options);

Я также попытался сделать POST-запрос, используя простую HTML-форму, и это работает.

<form method="post" action="https://accounts.google.com/o/oauth2/token">
<input name="code" type="text" value="##code##" />
<input name="client_id" type="text" value="##client_id##" />
<input name="client_secret" type="text" value="##client_secret##" />
<input name="grant_type" type="text" value="authorization_code" />
<input name="redirect_uri" type="text" value="urn:ietf:wg:oauth:2.0:oob" />

<input type="submit" /></form>

Понятия не имею, что не так с запросом javascript. Я пропускаю некоторые параметры или заголовки?

1 Ответ

0 голосов
/ 11 мая 2012

Похоже, кодировка data (в первом примере) не соответствует типу контента.

Кодировка data выглядит как application / json, но указывается тип содержимого application / x-www-form-urlencoded.

Вам необходимо изменить кодировку data для urlencoded.

   data: "code=successCode&client_id=clientId&client_secret=clientSecret&grant_type=authorization_code&redirect_url=urn:ietf:wg:oauth:2.0:oob"
...