我们的代码可以完美地访问GooglePlus API,但是现在它莫名其妙地不再起作用,而是返回A(401)无效的凭据"此行被称为:
$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 />";
}
i当用户拒绝访问对我的aplication时遇到相同的错误,而令牌保留在db(或session)中。 API试图使用旧令牌进行身份验证。您需要检查
if(strpos($x->getMessage(), 'Invalid Credentials')) {
unset($_SESSION['access_token'];
}
,还从您的DB中删除所有相关数据。
什么失败?第一个授权的呼吁,还是第二个呼吁获得令牌?
检查已发送的URL,检查问题会更容易。和:Google可能已经更改了他们的OAuth API?
据我所知,一切都在检查,与您的帐户相关的凭据可能出现问题。
要验证这一点,请尝试使用另一个帐户访问API或尝试从Google帐户撤销您的应用程序。从您的帐户撤销您的申请:
- 导航到此页面:https://www.google.com/settings/account
- 单击安全链接,然后单击页面底部的管理访问按钮。
- 找到与您的网站相对应的应用程序,然后单击
撤销了您的网站/应用程序后,返回您的网站,然后重新认证。
当您使用相同凭据从其他设备登录并注销时引起此问题。