Google文档Api v2格式错误的代码描述无效授权错误

时间:2018-06-08 16:32:28

标签: google-api google-api-php-client google-api-client

我刚刚安装了Google API 2.0,设置了我的应用程序而我正在尝试授权用户,但我一直收到此错误:

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

用于创建授权链接我使用$oGoogleClient->createAuthUrl();

中的函数\Google_Client

它将我带到授权页面,然后返回我的授权页面,其中的代码如下所示:

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

要处理此请求,请使用$oGoogleClient->fetchAccessTokenWithAuthCode($sCode);

中的api funcion \Google_Client

起初我认为这是因为代码末尾的#,因为PHP只获得代码参数直到那个hashtag之前,所以我硬编码它来测试,但结果是同样的错误格式错误的验证码消息。

关于如何解决这个问题的任何想法?

更新:我已将代码移动到其他服务器,它将正确授权代码并检索访问令牌。我想它应该是服务器内部的东西,但我无法弄清楚是什么!

1 个答案:

答案 0 :(得分:0)

我正在使用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"