CK *_*Tan 16 access-token oauth-2.0 google-oauth
我有一个基于Web的应用程序,它使用Google OAuth2.0作为登录框架.直到昨天它还能很好地工作.访问令牌过期后,applcation无法获取刷新令牌.除此之外,"请求许可"页面已更改为"具有离线访问权限",而不是"知道您在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();
}
Run Code Online (Sandbox Code Playgroud)
我试图像我一样搜索类似的问题,但我找不到一个.这发生在昨天以后.在此之前,我从未对代码做过任何更改.
小智 18
在他的评论中,Fabian Parzefall帮助我解决了这个问题.
这是我的脚本:
if($client->isAccessTokenExpired()) {
$authUrl = $client->createAuthUrl();
header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL));
}
Run Code Online (Sandbox Code Playgroud)
它实际上非常简单.而不是让他点击"连接我"按钮(由GA API团队提供的演示脚本放置),我直接重定向他.不确定它是否是正确/更安全的方式,但那就是现在正在为我工作的那个!
| 归档时间: |
|
| 查看次数: |
22234 次 |
| 最近记录: |