Обмен токеном Google OAuth возвращает invalid_code
Я использую поток OAuth для веб-сервера Google, но когда я попытался обменять код авторизации с токеном доступа, он всегда жалуется на "invalid_code".
Вот проблема:
Шаг 1:
Перенаправить одну из наших страниц на https://accounts.google.com/o/oauth2/auth?scope=email&redirect_uri=https%3A%2F%2Fmyurl.com%2Fcallback&response_type=code&client_id=some_client_id '
Шаг 2:
Перенаправление происходит, и Google перенаправляет на наш URL-адрес
https://myurl.com/callback?code=somecode
Шаг 3:
curl -X POST --data "code = somecode & client_id = some_client_id & some_client_secret = some_client_secret & redirect_uri = https://myurl.com/callback&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token -v -trace-ascii/dev/stout
Ответ возвращается:
HTTP 400 Плохой запрос
{ "error": "invalid_grant", "error_description": "Недопустимый код".
}
Может кто-нибудь помочь мне с этой проблемой? Спасибо!
Ответы
Ответ 1
Срок службы кода авторизации составляет всего 10 минут и может использоваться только один раз. Итак, выполните следующие проверки:
- Вы используете его через 10 минут? Если это так, используйте его через 10 минут.
- Вы использовали его раньше? Если это так, получите новый, а затем используйте его.
- Время синхронизации сервера с сервером OAuth Google? Если нет, измените свое время.
Ответ 2
Я использовал http://localhost:8080 в качестве моего URL-адреса перенаправления, так как я просто тестировал их примеры. И мое содержимое json файла имело следующее:
"redirect_uris": [
"http://localhost:8080"
],
"javascript_origins": [
"http://localhost:8080"
]
В консоли разработчика у меня был параметр redirect_uri, равный " http://localhost:8080", и я получал ту же ошибку. Я изменил его на " http://localhost:8080/", после чего он начал работать.
Надеюсь, это поможет!