Я пытаюсь реализовать Google Signin для нашего серверного приложения, используя эту документацию: Google Sign-In для серверных приложений
Я успешно выполнил шаги 1-6 и былвозможность получить однократный код авторизации.Однако на шаге 7, когда я делаю запрос на обмен одноразового кода авторизации на токен доступа, я получаю ответ:
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
Я пробовал оба запроса HTTP POST вручную, используя CURL, а также пробовал официальный клиент API Python Pythonбиблиотека.Ответ всегда один и тот же "invalid_grant
".
При запросе однократного кода авторизации я обязательно запросил режим автономного доступа.
Я подтвердил, что пользователь, для которого я получаюодноразовый код авторизации действительно предоставил доступ, перейдя на https://myaccount.google.com/u/0/permissions и убедившись, что наше приложение указано в «Сторонних приложениях с доступом к учетной записи» с правильными областями доступа.
Не могли бы вы посоветоватьо том, как отладить это?Сообщение об ошибке, к сожалению, не помогает, и я уже перепробовал все, что смог найти об этой конкретной ошибке при переполнении стека или где-либо еще.
ОБНОВЛЕНИЕ: Я выяснил, в чем проблема.По-видимому, одноразовый код подходит только для одного запроса, независимо от того, успешен он или нет.Итак, я пытался получить токен обновления, и, поскольку моя первая попытка была неверно сформирована, запрос не удался, и при первой же ошибке одноразовый код стал недействительным.Любой последующий запрос, даже правильно сформированный, с использованием этого кода завершается с ошибкой «invalid_grant».Это несколько неожиданное поведение, у меня сложилось впечатление, что «один раз» означает одну успешную попытку.Надеюсь, что это помощь для других, которые будут работать над этим.Я с запросами OAuth возвращает более информативные сообщения об ошибках, чтобы помочь с отладкой.