【问题标题】:fecing 'Google_Auth_Exception' wror fetching OAuth2 access token, message: 'invalid_client'' error获取 OAuth2 访问令牌时遇到“Google_Auth_Exception”错误,消息:“invalid_client”错误
【发布时间】:2015-01-22 18:44:09
【问题描述】:

我正在尝试通过 gmail api 从 Google 获取邮件

在收到令牌后对 Google_Client 进行身份验证时,我收到此错误

致命错误:未捕获的异常“Google_Auth_Exception”带有消息“获取 OAuth2 访问令牌时出错,消息:'invalid_client'”

我的代码很简单,使用 google-api-php-client-master 我的代码如下

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);

}

我已多次检查我的凭据,它们都是正确的

有人能帮我解决吗

【问题讨论】:

  • 转到应用程序的开发者控制台。同意屏幕确保填写产品名称和电子邮件。
  • 所有内容都已正确填写,在重新生成客户端密码几次后它工作正常,但在尝试列出按摩 $massages=listMessages($service, $user_info->email) 时再次出错;它按摩(403)访问未配置。您的项目未启用 API,或者您的 API 密钥上配置了 per-IP 或 per-Referer 限制,并且请求与这些限制不匹配。请使用 Google Developers Console 更新您的配置我不明白它要求的配置
  • 在开发者控制台中转到 API 并启用 Gmail-API 和 google+ API

标签: php oauth-2.0 google-oauth


【解决方案1】:

就我而言,我必须设置客户端密码文件

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

这解决了我的问题。希望它可以帮助某人。

【讨论】:

    【解决方案2】:

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

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

    1. 检查客户端密码末尾没有额外的空格
    2. 确保您的域已通过验证

    【讨论】:

    • 本地主机呢?
    【解决方案3】:

    我遇到了同样的问题,但我的解决方案非常简单且令人沮丧。

    当您在 Google Developers Console 上的 API 凭据中复制“客户端密码”时,他们会在“客户端密码”之后添加一个空格。请务必删除!

    $client_secret = "hf83nd93hd93j39dj9 ";<--
    

    【讨论】:

    • 在我的情况下它们没有空间......应该是应用程序api中的总和配置错误
    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多