При аутентификации с помощью oAuth и youtube всегда выдается ошибка: invalid_grant при 2-й попытке авторизации, почему? - PullRequest
10 голосов
/ 08 декабря 2011

Начиная со вчерашнего дня, мое приложение может проходить аутентификацию с помощью Google (YouTube) через oAuth 2.0 первый раз, без проблем, но 2 раза (повторная аутентификация, то же приложение + тот же пользователь), когда я обмениваю requestToken на accessTokenЯ получаю ошибку:

error : invalid_grant

Я использую:

grant_type = authorization_code

, как они предлагают.Раньше 2 дня назад происходило то, что на повторной аутентификации веб-страница говорила: «Вы уже проходили аутентификацию с этим приложением раньше, хотели бы вы снова предоставить ему доступ?».Что изменилось или что я могу делать не так?

Ответы [ 2 ]

10 голосов
/ 09 декабря 2011

Я нашел способ исправить это (по крайней мере, для нас).При перенаправлении на URL-адрес account.google.com/o/oauth2/auth нам нужно было добавить оба параметра Approval_prompt = force и access_type = offline.Если один из них отсутствовал, мы не получили токен обновления.

Этот URL-адрес документирует все параметры, но ничего не говорит о токене обновления: http://code.google.com/apis/accounts/docs/OAuth2WebServer.html

1 голос
/ 12 декабря 2011

Я думаю, что нашел ответ здесь:

https://groups.google.com/forum/#!searchin/oauth2-dev/invalid_grant/oauth2-dev/eaOa6THER0k/z4eO-taUFxgJ

Проблема заключалась в том, что параметр «code», который нужно отправить, должен быть закодирован. Это сработает, если вы установите для параметраree_prompt значение Force, поскольку код возврата содержит безопасные для URL символы. Однако это не относится к коду возврата при втором запросе авторизации.

Для меня это исправлено, я надеюсь, что это также подходит и для вас.

...