【问题标题】:Google Oauth 2.0 check if my referesh access token is expired or notGoogle Oauth 2.0 检查我的刷新访问令牌是否过期
【发布时间】:2018-04-16 04:07:32
【问题描述】:

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

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

 if($client->isAccessTokenExpired())

但我想检查我的刷新令牌是否是我们可以检查它的一种方式,或者 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'
        )); 

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

【问题讨论】:

    标签: php oauth google-api google-oauth


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 2014-01-01
      • 2015-11-04
      • 2015-04-01
      • 1970-01-01
      • 2014-07-30
      • 2017-06-16
      相关资源
      最近更新 更多