PHP-клиент Google API выдает неправильную ошибку кода аутентификации

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

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.


person janedoe    schedule 09.05.2018    source источник


Ответы (1)


Я использую клиентскую библиотеку 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"

Тогда все работает нормально.

person slideshowp2    schedule 26.02.2019