我们的代码可以完美地访问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 />";
}
答案 0 :(得分:1)
当用户拒绝访问到我的应用程序时,我遇到了同样的错误,并且令牌仍留在数据库(或会话)中。 API尝试使用旧令牌进行身份验证。您需要检查
if(strpos($x->getMessage(), 'Invalid Credentials')) {
unset($_SESSION['access_token'];
}
并删除数据库中的所有相关数据。
答案 1 :(得分:0)
什么失败了?第一次授权,或第二次获得令牌?
检查发送的URL,更容易检查问题。
并且:谷歌可能已经改变了他们的oAuth API?
答案 2 :(得分:0)
据我所知,一切都会检查出来,与您的帐户相关联的凭据可能出现问题。
要验证这一点,请尝试使用其他帐户访问API或尝试从Google帐户撤消您的应用。要从您的帐户撤消您的申请,请执行以下操作:
撤销您的网站/应用程序后,请返回您的网站,然后重新进行身份验证。
答案 3 :(得分:0)
当您使用相同凭据从其他设备登录然后注销时,会导致此问题。