【发布时间】:2017-05-07 13:50:31
【问题描述】:
将 Google API PHP 客户端与服务帐户一起使用,它会返回一个如下所示的数组:
array (size=3)
'access_token' => string '...TOKEN...' (length=127)
'token_type' => string 'Bearer' (length=6)
'expires_in' => int 3600
每个页面请求都生成一个新令牌是最佳做法吗?当每个令牌有效期为一小时时,这样做似乎很浪费。但由于令牌不包含created 值或token_id 值,因此内置的isAccessTokenExpired() 方法将始终返回true,这意味着它始终过期。
我看到了重用同一个令牌的几个选项:
选项 1:当通过 fetchAccessTokenWithAssertion() 创建令牌时,我可以手动将 created 值添加到令牌数组中,并以 time() 作为其值。然后将其保存到会话/数据库中,以便稍后在调用 isAccessTokenExpired 时,它将对该字段进行验证。
选项 2:将令牌连同令牌将过期的时间戳一起保存到会话/数据库 (time() + $token['expires_in']),然后在后续视图中,我可以进行自己的计算以验证令牌是否仍在有效时间段内。这似乎也有点奇怪,因为我不能完全确定谷歌没有撤销令牌或类似的有趣事情。
选项 3:调用使用访问令牌并检查其响应的方法。如果调用成功,那么访问令牌必须仍然是好的,如果不是,那么我可以继续要求一个新的。但是我可以调用什么方法?只需要最基本的权限就可以了。
谢谢。
【问题讨论】:
标签: oauth google-api google-oauth access-token google-api-client