gpt4 book ai didi

oauth-2.0 - OAuth 2.0 访问 token 已过期,刷新 token 不可用

转载 作者:行者123 更新时间:2023-12-03 14:46:42 32 4
gpt4 key购买 nike

我有一个基于 Web 的应用程序,它使用 Google OAuth2.0 作为登录框架。直到昨天为止,它都可以正常工作。访问 token 过期后,应用程序无法获取刷新 token 。除此之外,“请求许可”页面已更改为“离线访问”,而不是“知道您在 Google 上的身份”和“查看您的电子邮件”

最初,“请求许可”页面将请求访问“了解您在 Google 上的身份”和“查看您的电子邮件”。用户注销并尝试第二次登录后,“请求权限”页面也将相同。

但是,直到昨天,“请求权限”页面才更改为“具有离线访问权限”。访问 token 过期后,我收到以下错误消息:

PHP fatal error :未捕获的异常 'Google_AuthException' 带有消息“OAuth 2.0 访问 token 已过期,并且刷新 token 不可用。自动批准的响应不会返回刷新 token 。在/home2/xxxx/public_html/test/google-api-php-client/src/auth/Google_OAuth2.php:221

我试过$client->setAccessType('online'); .但是,我仍然遇到这个 fatal error 。以下是我获取访问 token 的代码:

    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();
}

我试图搜索与我类似的问题,但找不到。这是从昨天开始发生的。在此之前,我从未对代码进行任何更改。

最佳答案

通过他的评论,Fabian Parzefall 帮助我解决了这个问题。

这是我的脚本:

if($client->isAccessTokenExpired()) {

$authUrl = $client->createAuthUrl();
header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL));

}

其实很简单。我没有让他点击“连接我”按钮(正如 GA API 团队提供的演示脚本所说),而是直接重定向他。
不确定这是否是正确/更安全的方式,但那是现在为我工作的方式!

关于oauth-2.0 - OAuth 2.0 访问 token 已过期,刷新 token 不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565653/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com