Google Docs Api v2 Ошибка неверного предоставления с неверным описанием кода авторизации - PullRequest
0 голосов
/ 08 июня 2018

Я только что установил Google API 2.0, настроил свое приложение и пытаюсь авторизовать пользователя, но постоянно получаю эту ошибку:

array(2) {
  ["error"]=>
  string(13) "invalid_grant"
  ["error_description"]=>
  string(20) "Malformed auth code."
}

для создания ссылки авторизации Я использую функцию$oGoogleClient->createAuthUrl(); в пределах \Google_Client

он переводит меня на страницу авторизации, а затем возвращается на страницу авторизации с кодом в URL:

http://example.com/authorize/?code=4/AABBv8nQ5N4mqrOTANDphl_L4ROPnzK6yckffDu-dnlIJGE9ZOcXo9eehUVbzbExbMuhCZQAb5zu9_BIS-VI4E4#

Для обработки этого запроса яиспользуйте функцию API $oGoogleClient->fetchAccessTokenWithAuthCode($sCode);, найденную в \Google_Client

Сначала я подумал, что это из-за # в конце кода, потому что PHP получает параметр кода только до этого хэштега, поэтомуЯ жестко запрограммировал его для тестирования, но в результате получилось то же сообщение об ошибке Malformed Auth Code.

Есть идеи, как решить эту проблему?

Обновление: я переместил код в другойсервер, и он будет правильно авторизовать код и получить токен доступа.Я предполагаю, что это должно быть что-то внутри сервера, но я не могу понять, что!

1 Ответ

0 голосов
/ 26 февраля 2019

Я использую Node.js клиентскую библиотеку googleapis. Вот мой случай:

Код авторизации во фрагменте хеша URL кодируется encodeURIComponent api, поэтому, если вы передадите этот код для запроса доступамаркер.Будет выдано сообщение об ошибке:

{ "error": "invalid_grant", "error_description": "Malformed auth code." }

Поэтому я использую decodeURIComponent для декодирования кода авторизации.

decodeURIComponent('4%2F_QCXwy-PG5Ub_JTiL7ULaCVb6K-Jsv45c7TPqPsG2-sCPYMTseEtqHWcU_ynqWQJB3Vuw5Ad1etoWqNPBaGvGHY')

После декодирования код авторизации:

"4/_QCXwy-PG5Ub_JTiL7ULaCVb6K-Jsv45c7TPqPsG2-sCPYMTseEtqHWcU_ynqWQJB3Vuw5Ad1etoWqNPBaGvGHY"
...