存储访问令牌并处理其过期

Pav*_*dhu 8 facebook oauth google-api facebook-graph-api google-oauth

我正在使用OAuth:

  1. 将用户签入我的Web应用程序的第二种方法(而不是手动提供他们的名字,电子邮件和密码)
  2. 一种接收整个网站接收用户数据的方法.

存储访问令牌时最佳做法是什么?我有两个选择:

  1. 在cookie中存储访问令牌
  2. 将访问令牌存储在数据库中

两种选择有哪些优缺点?


关于令牌到期,应该怎么做才能解决这个问题?

我知道我可以解决这个问题的一种方法是检查调用API时是否有错误,因此请求新令牌然后再次调用API.但是,在申请新令牌时,我是否会要求用户重新登录?我想这会是一个问题,当我的网站上的页面需要来自Facebook的数据,但要检索它,用户必须重新登录.

我不明白其他网站是如何设法维持对Facebook,Google或Twitter API的访问而不需要我再次登录的,尤其是当我在另一台我没有登录Facebook,Twitter或Google的设备上时.他们如何做到这一点?谢谢.

akg*_*aur 4

如果使用Google OAuth2.0进行身份验证。Google 提供了两种令牌,即访问令牌和刷新令牌。

访问令牌的生命周期有限为 3600 秒,但刷新令牌的有效期更长。

刷新令牌也会过期。阅读Google OAuth2.0链接的“令牌过期”部分

无需重新登录,即可通过刷新令牌获取新的访问令牌。恢复 API

因此,可以实现逻辑来检查生成访问令牌后经过的时间,并为新的访问令牌生成采取预防措施。Google 令牌在 3600 秒后过期,因此每隔 3500 秒就可以获取访问令牌,并用新的访问令牌更新存储的旧访问令牌以供进一步使用。另一种方法是在创建任何 api 的服务时在GoogleCredential中设置刷新令牌,该令牌作为参数(httpRequestInitializer)传递。(例如查找Drive.Builder

如果您没有存储可以重新生成访问令牌的刷新令牌,则必须再次进行身份验证才能获取新令牌。