Google Oauth 2.0 检查我的引用访问令牌是否已过期

usa*_*ama 3 php oauth google-api google-oauth

嗨,当用户尝试使用 google Oauth 2.0 登录时,我正在设置离线访问,然后我正在获取刷新令牌并将其存储到我的数据库中,以便稍后我可以使用它而无需要求用户再次登录,我已经找到了该用户可以从他的 google 帐户中撤销我们对他的 google 应用程序的应用程序访问权限,之后我们的刷新访问令牌将不起作用。

所以他们是一种方法,我们可以在使用它之前检查我们的刷新令牌是否有效我试图从谷歌 API 文档中找到但找不到任何帮助我只能发现我们可以检查简单访问令牌的过期时间仅 1 小时有效。

 if($client->isAccessTokenExpired())
Run Code Online (Sandbox Code Playgroud)

但我想检查我的刷新令牌是否是我们可以检查它的一种方式,或者 google outh 2.0 是否有一些网络钩子可以在用户撤销我们的应用程序访问时调用我们的 url。

这是我的登录代码

$google_redirect_url = $url;    
$client = new \Google_Client(); 
$client->setAuthConfig('/secret.json');
$client->setRedirectUri($google_redirect_url);
$client->setAccessType('offline');        // offline access
$client->setIncludeGrantedScopes(true);   // incremental auth          
$client->setApprovalPrompt('force');
$client->setScopes(array(
            'https://www.googleapis.com/auth/plus.me',
            'https://www.googleapis.com/auth/userinfo.email',
            'https://www.googleapis.com/auth/userinfo.profile',
            'https://www.googleapis.com/auth/youtube',
            'https://www.googleapis.com/auth/youtube.upload'
        )); 
Run Code Online (Sandbox Code Playgroud)

我也一直在寻找解决方案,但找不到。

DaI*_*mTo 6

你需要考虑你要在这里做什么。您想在尝试刷新访问令牌之前向 Google 发送请求,询问是否可以使用此刷新令牌。然后,如果 Google 说没问题,您就可以使用刷新令牌。

虽然这在理论上似乎是一个好主意,但毕竟我们都喜欢避免错误。但是,如果刷新令牌不起作用,您所做的只是将您发出的请求数量加倍以避免错误。为什么要使您提出的请求数量增加一倍?

您应该做的只是尝试使用刷新令牌,如果失败,请再次要求用户访问。假设这是自动运行的,只需从数据库中删除刷新令牌,不再尝试自动运行此用户请求。

话虽如此,谷歌为我们提供的验证刷新令牌的最佳方式也是唯一的方法是尝试使用它。您在库中找到的任何方法都可能只是这样做。