收到访问令牌后如何解释 oauth expires=4 位代码

Posted

技术标签:

【中文标题】收到访问令牌后如何解释 oauth expires=4 位代码【英文标题】:How to interpret the oauth expires=4 digit code upon receiving access token 【发布时间】:2011-05-16 14:10:46 【问题描述】:

在我的应用程序中,某些点击需要生成 facebook 帖子。如果我没有访问令牌,我会弹出 facebook 登录屏幕。

在收到访问令牌后,我最后还会收到一个“expires=4 位数”。

例如过期=3994

4 位代码是什么意思?

访问令牌过期的时间(以秒为单位)吗?

或者是访问令牌过期的滴答数。

我看到一些 facebook api 代码需要 12 位过期代码,但我只收到 4 位。

我需要知道访问令牌是否已过期的原因是我不希望我的帖子失败,并且希望在它已过期时弹出登录屏幕。

【问题讨论】:

【参考方案1】:

它是到期时间之前的秒数。即

3994 / 60 / 60 =~ 1 hour

如果您看到更多数字(尤其是在画布访问链接上),它可能是一个 Unix 时间戳,您可以轻松地将其转换为秒。您也可以使用以下范围来获取未过期的令牌(但它会在授权弹出窗口中显示附加警告):

scope=offline_access

在我的项目 (http://www.nbusy.com/projects/communicator) 中,我使用类似下面的方法来了解令牌的到期时间:

DateTime eprityTime = DateTime.Now.AddSeconds(3994);

并将其与 DateTime.Now 进行比较,并在令牌过期时关闭会话。

【讨论】:

【参考方案2】:

您最初在 signed_request 中从 Facebook 收到的令牌将在 2 小时或 7200000 毫秒或 7200 秒后过期。如果您使用以下请求扩展令牌,您将收到 5184000 秒的新过期时间,转换为 60 天。

更多关于这个答案的信息...Expiry Time of facebook access token

【讨论】:

以上是关于收到访问令牌后如何解释 oauth expires=4 位代码的主要内容,如果未能解决你的问题,请参考以下文章

如何识别 OAuth 令牌是不是已过期?

如何在spring + java中添加(覆盖)oAuth2访问令牌的到期时间

如何在 OAuth 资源服务器中验证访问令牌

即使访问令牌有效,也无法使用刷新令牌刷新 Google OAuth2 的访问令牌

用于 OAuth2 访问令牌生成的节点模块?

为啥我的 twitter oauth 访问令牌无效/过期