使用谷歌API PHP客户端与服务帐户,它返回类似如下的数组:您可以重复使用Google服务帐户访问令牌吗?
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:调用使用访问令牌并检查其响应的方法。如果通话成功,那么访问令牌一定是好的,如果不是的话,我可以继续请求一个新的。但是我可以调用什么方法?一个只需要最基本的权限就是好的。
谢谢。
谢谢您的回答,并确认我的想法@sammitch。这正是我现在决定要做的。我只是将令牌和expires时间戳一起存储在PHP会话中。 – Corey