Google api php клиент выдает ошибку "неверный код авторизации" - PullRequest
0 голосов
/ 10 мая 2018

Итак, я недавно обновил клиент API Google для PHP, и у меня возникли проблемы с его аутентификацией и выдачей мне токена. Раньше он прекрасно работал со старой библиотекой, однако эта новая библиотека, установленная через composer, доставила мне несколько проблем. Вот мой код для справки:

if (!empty($gp_auth_code) {
    $client = new Google_Client();
    $client->setAuthConfig('<path to client.json file>');

    $client->addScope(Google_Service_Oauth2::PLUS_LOGIN);

    $client->setRedirectUri('<redirect URI>');


    $token = $client->fetchAccessTokenWithAuthCode($gp_auth_code);

    $gp_access_token = $token['access_token'];
    $gp_refresh_token = $client->refreshToken($token)['refresh_token'];
}

Всякий раз, когда я запускаю этот код, он дает мне ответ «недопустимое разрешение, искаженный код авторизации».

Что-то я не так делаю? $ Gp_auth_code раньше работал нормально, и путь к файлу json определенно работает, и URI перенаправления также определенно там. Любая помощь будет оценена.

Я пытаюсь получить доступ к информации профиля Google Plus, чтобы мы могли зарегистрировать пользователя через Google Plus.

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"

Тогда все отлично работает.

...