1

我们的代码可以完美地访问 Googleplus Api,但现在它莫名其妙地不再工作,而是在调用此行时返回“(401) Invalid Credentials”错误:

$me = $plus->people->get('me');

这是完整的代码片段(php):

try
{
    $client = new apiClient();

    $client->setApplicationName("Google OAuth");
    $client->setClientId(GOOGLE_API_CLIENT_ID);
    $client->setClientSecret(GOOGLE_API_CLIENT_SECRET);
    $client->setRedirectUri(GOOGLE_API_REDIRECT_URI);
    $client->setDeveloperKey('XXX');
    $client->setScopes(array('https://www.googleapis.com/auth/plus.me'));

    $plus = new apiPlusService($client);

    $oauth2 = new apiOauth2Service($client);

    $client->authenticate();
    $token = $client->getAccessToken();

    if (isset($token))
        $client->setAccessToken($token);

    if ($client->getAccessToken()) {
         $me = $plus->people->get('me');
    }
}
catch (Exception $x)
{
    echo "Stack: " . $x->getTraceAsString() . "<br />";
    echo "Message: " . $x->getMessage() . "<br />";
    echo "File: " . $x->getFile() . "<br />";
    echo "Line: " . $x->getLine(). "<br />";

}
4

4 回答 4

1

当用户拒绝访问我的应用程序并且令牌保留在数据库(或会话)中时,我遇到了同样的错误。API 试图使用旧令牌进行身份验证。你需要检查

if(strpos($x->getMessage(), 'Invalid Credentials')) {
   unset($_SESSION['access_token'];
}

并从您的数据库中删除任何相关数据。

于 2015-05-06T07:27:12.080 回答
0

据我所知,一切都已检查,与您的帐户关联的凭据可能出现问题。

要验证这一点,请尝试使用其他帐户访问 API 或尝试从 Google 帐户撤消您的应用程序。要从您的帐户中撤销您的申请:

  1. 导航到此页面:https ://www.google.com/settings/account
  2. 单击安全链接,然后单击页面底部的管理访问按钮。
  3. 找到与您的站点对应的应用程序,然后单击

在您的站点/应用程序被撤销后,返回您的站点,然后重新进行身份验证。

于 2012-11-09T02:56:10.897 回答
0

当您使用相同的凭据从其他设备登录然后注销时会导致此问题。

于 2014-05-01T15:42:58.277 回答
0

什么失败了?第一次授权,还是第二次获得令牌?

检查发送的 URL,检查问题会更容易。并且:Google 可能已经更改了他们的 oAuth API?

于 2012-10-30T12:40:12.020 回答