GooglePlus API - (401)无效的凭据错误

时间:2012-10-29 22:50:05

标签: php oauth-2.0 google-plus

我们的代码可以完美地访问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 个答案:

答案 0 :(得分:1)

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

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

并删除数据库中的所有相关数据。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

要验证这一点,请尝试使用其他帐户访问API或尝试从Google帐户撤消您的应用。要从您的帐户撤消您的申请,请执行以下操作:

  1. 导航到此页面:https://www.google.com/settings/account
  2. 点击安全链接,然后点击页面底部的管理访问权限按钮。
  3. 找到与您网站相对应的应用,然后点击
  4. 撤销您的网站/应用程序后,请返回您的网站,然后重新进行身份验证。

答案 3 :(得分:0)

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