Google_Auth_Exception:获取OAuth2访问令牌时出错,消息:'invalid_request'

时间:2014-01-09 10:10:06

标签: google-api-php-client

我正在尝试使用最新版本的google-api-php-client获取访问令牌(请查看此https://github.com/google/google-api-php-client),我正在关注此官方文档: https://developers.google.com/api-client-library/php/guide/aaa_oauth2_web

唯一的区别是我想使用服务Google_Service_Plus,而不是Google_Service_Urlshortener

基本上我执行以下步骤:

  • 我初始化了Google客户端$client,指定了客户端ID,客户端密钥,开发人员密钥,范围和重定向URI(指向我的localhost Ubuntu 12.04 - PHP 5.3.10)。
  • 我使用Google客户端$plus初始化Google Plus服务$client
  • 我使用$client->createAuthUrl()将用户重定向到验证网址。
  • 用户可以看到同意页面并接受。
  • 我获得了用于令牌交换的授权码$_GET['code']
  • 然后,在回调页面中,我尝试$client->authenticate($_GET['code']);,但谷歌服务器返回HTTP 400,我得到Google_Auth_Exception: Error fetching OAuth2 access token, message: 'invalid_request'

这里的流程打破了。
怎么了?

任何帮助将不胜感激。

提前致谢,
尼可罗马基。

2 个答案:

答案 0 :(得分:8)

我创建了一个oauth2callback.php文件,遇到了这个问题。当我正确设置Google_Client时,问题就消失了。起初我只设置了clientId和secret。一旦我设置了redirectUri,我的代码就开始工作了。我不认为我需要设置redirectUri,因为我知道重定向已经发生(我在重定向页面上)。我认为这个答案可能会帮助其他人遇到类似的问题。

答案 1 :(得分:3)

一旦我为$ client设置了JSON配置文件,它对我有用。

实施例:$client->setAuthConfigFile(__dir__.'/../conf/client_secrets.json');