我正在使用OAuth:
存储访问令牌时最佳做法是什么?我有两个选择:
任何一种选择有哪些优点和缺点?
关于令牌到期,应该采取什么措施来解决这个问题?
我知道我可以处理这个问题的一种方法是检查调用API时是否有错误,然后请求新令牌,然后再次调用API。但是,在申请新令牌时,我是否会要求用户重新登录?我想这会是一个问题,当我的网站上的一个页面需要来自Facebook的数据,但要检索它,用户必须重新登录。
我不明白其他网站是如何设法维持对Facebook,Google或Twitter API的访问而不需要我再次登录的,尤其是当我在另一台我没有登录过Facebook的设备上时, Twitter或谷歌。他们如何做到这一点?感谢。
答案 0 :(得分:4)
如果使用Google OAuth2.0进行身份验证。谷歌提供两个令牌,即访问令牌和刷新令牌。
访问令牌的有效期为3600秒,但刷新令牌在较长时间内有效。
刷新令牌也会过期。阅读 Google OAuth2.0 链接的“令牌过期”部分
可以从刷新令牌获取新的访问令牌而无需重新登录。 ReST api
因此,可以实现逻辑以检查生成访问令牌后经过的时间,并采取预防性步骤来生成新的访问令牌。 Google令牌将在3600秒后到期,因此可以在每3500秒后获取访问令牌,并更新存储在新版本中的旧访问令牌以供进一步使用。另一种方法是,在GoogleCredential中设置刷新令牌,在创建任何api的服务时作为参数(httpRequestInitializer)传递。(例如查找Drive.Builder)
如果您不存储可以重新生成访问令牌的刷新令牌,则必须再次进行身份验证以获取新令牌。