所以我最近升级了PHP的google api客户端,我一直无法通过身份验证并给我一个令牌。它曾经与旧库一起工作,但是这个通过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肯定也存在。任何帮助,将不胜感激。
我基本上试图访问谷歌加配置文件的信息,所以我们可以通过谷歌加注册用户。
我正在使用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"
然后,一切正常。