我有一个基于Web的应用程序,它使用Google OAuth2.0作为登录框架。它以前工作很好,直到昨天。访问令牌过期后,应用程序无法获取刷新令牌。除此之外,“请求许可”页面更改为“有离线访问”,而不是“知道您在Google上的人”和“查看您的电子邮件”OAuth 2.0访问令牌已过期,并且刷新令牌不可用
最初,“请求许可”页面将要求访问“了解你在Google上的人”和“查看你的电子邮件”。用户注销并尝试第二次登录后,“请求许可”页面也将相同。
但是,直到昨天,“请求许可”页面更改为“有离线访问”。访问令牌过期后,我收到以下错误消息:
PHP致命错误:未收到的异常'Google_AuthException'带有消息'OAuth 2.0访问令牌已过期,并且刷新令牌不可用。刷新令牌不会返回自动批准的响应。 in /home2/xxxx/public_html/test/google-api-php-client/src/auth/Google_OAuth2.php:221
我试过。但是,我仍然有这个致命的错误。下面是我的代码获取访问令牌:
if ($client->getAccessToken()) {
$token = $client->getAccessToken();
$authObj = json_decode($token);
$refreshToken = $authObj->refresh_token;
$user = $oauth2->userinfo->get();
$me = $plus->people->get('me');
$email = filter_var($user['email'], FILTER_SANITIZE_EMAIL); // get the USER EMAIL ADDRESS using OAuth2
$optParams = array('maxResults' => 100);
$activities = $plus->activities->listActivities('me', 'public', $optParams);
$_SESSION['access_token'] = $client->getAccessToken();
} else {
$authUrl = $client->createAuthUrl();
}
我试图寻找像我这样的类似问题,但我找不到一个。这发生在昨天以来。在此之前,我从未对代码做过任何修改。
据我所知,他们改变了一点他们的安全管理。如果您现在可以访问应用程序,那么Google知道未来,您要求提供哪些权限并将其保存,如果您想拥有新的权限或脱机访问权限,则只会再询问一次。我想,这是一个暂时的错误,他们一直在更新他们的系统,因为我现在没有遇到任何问题。 –
更新:你说得对,我也不能使用刷新标记了... –
你能告诉我如何摆脱这个? – Akilsree1