2014-11-24 158 views
3

我试图通过Gmail APIfecing“Google_Auth_Exception” WROR获取的OAuth2访问令牌,消息:“invalid_client”错误

从谷歌获取邮件,而接收令牌我收到此错误

后验证Google_Client

致命错误:未捕获的异常“Google_Auth_Exception”与消息“错误获取的OAuth2访问令牌,消息:‘在

我的代码invalid_client’”是简单的使用谷歌-API-PHP-客户主机和我的代码是如下

require_once('config.php'); 
require_once 'autoload.php'; 
$client = new Google_Client(); 
$client->setScopes(array(
'https://www.googleapis.com/auth/plus.login', 
'profile', 
'email', 
'openid', 
'https://www.googleapis.com/auth/gmail.readonly', 
'https://mail.google.com/', 

)); 
$client->setApplicationName($config->social['google']->app_name); 
$client->setClientId($config->social['google']->client_id); 
$client->setClientSecret($config->social['google']->client_secret); 
$client->setRedirectUri($config->social['google']->Redirect_URI); 
$client->setDeveloperKey($config->social['google']->api_key); // API key 
$gclient=''; 
print_r($_GET); 
$token=new stdclass; 
if(!isset($_SESSION['google_token'])) 
{ 
$gclient=$client->authenticate($_GET['code']);//error occurs hare 
$_SESSION['gclient']=$gclient; 
if($gclient) 
{ 
$_SESSION['google_token'] = $client->getAccessToken(); 
} 
print_r($gclient); 

}

我检查了我的凭据几次,他们都是正确的

会有人请帮助我在这

+0

转到您的开发人员控制台以查找应用程序。同意屏幕确保填写产品名称和电子邮件。 – DaImTo 2014-11-25 08:03:57

+0

全部正确填充它在客户端秘密重新生成几次后正常工作,但在尝试列出按钮时再次出现错误$ massages = listMessages($ service,$ user_info-> email) ;它按摩(403)访问未配置。 API未针对您的项目启用,或者API密钥上配置了per-IP或per-Referer限制,并且请求不符合这些限制。请使用Google Developers Console更新您的配置,我不明白它在开发者控制台中要求的配置 – 2014-11-25 19:56:33

+0

转到API并启用Gmail-API和Google + API – DaImTo 2014-11-25 20:16:15

回答

15

我有同样的问题,但我的解决办法是extreamly容易令人沮丧。

当您在Google Developers Console 的API Credentials中复制“客户端密钥”时,它们会在“客户端密钥”后面添加一个空格。一定要删除它!

$client_secret = "hf83nd93hd93j39dj9 ";<-- 
+0

在我的情况下,它们没有空间...应该是总结配置错误在应用程序api – 2015-01-07 07:37:47

+0

@Mario M.乌尔伟大!!!!!谢谢 – Raj 2016-03-24 11:27:36

1

正如Mario M.解释的,当您复制客户端密钥时还有一个额外的空间。你必须确保你做对了。

我得到了同样的错误 - Error fetching OAuth2 access token, message: 'invalid_client',但在我的情况下,这是由于未验证的域。因此,如果您正在为Web应用程序或类似的东西创建凭据并收到相同的错误,

  1. 检查有一个在客户端的秘密到底有没有额外的空间
  2. 确保您的域名通过验证
+0

本地主机呢? – 2017-04-13 13:04:20

0

在我而言,我不得不设置客户端密钥文件

$client->setAuthConfigFile(WWW_ROOT . 'files\json\client_secret_google_api.json'); 

并解决了我的问题。希望它能帮助别人。

相关问题