我有一个基于 Web 的应用程序,使用 Google OAuth2.0 作为登录框架。它之前可以很好地运行,直到昨天。应用程序在访问令牌过期后无法获取刷新令牌。此外,“请求权限”页面已更改为“具有脱机访问权限”,而不是“了解您在 Google 上的身份”和“查看您的电子邮件”。
原本,“请求权限”页面会请求访问“了解您在 Google 上的身份”和“查看您的电子邮件”。用户注销并尝试第二次登录后,“请求权限”页面也将保持不变。
然而,直到昨天,“请求权限”页面更改为“具有脱机访问权限”。在访问令牌过期后,我收到以下错误消息:
PHP 致命错误:未捕获异常 'Google_AuthException',消息为 'OAuth 2.0 访问令牌已过期,且刷新令牌不可用。自动批准的响应不返回刷新令牌。',位于 /home2/xxxx/public_html/test/google-api-php-client/src/auth/Google_OAuth2.php 中的第 221 行
我尝试了 $client->setAccessType('online');
,但仍旧出现致命错误。下面是我的代码以获取访问令牌:
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();
}
我尝试搜索与我类似的问题,但是找不到。这件事发生在昨天。在此之前,我从未对代码进行任何更改。