如何在过期之前获取新的 FacebookSDKAccessToken?

Posted

技术标签:

【中文标题】如何在过期之前获取新的 FacebookSDKAccessToken?【英文标题】:How to get new FacebookSDKAccessToken before it has been expired? 【发布时间】:2017-08-17 14:23:58 【问题描述】:

我的 iPhone 应用程序具有使用 facebook 登录的功能,包括一些与图形 API 相关的其他功能。 我收到 facebook 访问令牌并将其保存到服务器和服务器,然后从 web 端进一步请求图形 API 调用。由于 facebook 访问令牌在 60 天后过期,我收到访问令牌过期错误。

要解决这个问题,我可以使用 FBSDKAccessToken.refreshCurrentAccessToken 方法来获取新的访问令牌吗? 对于 FBSDKAccessToken.refreshCurrentAccessToken,我没有找到任何明确的想法。

或者是否有任何其他方法可以通过我们的应用程序中的 facebook 自动登录来获取新的访问令牌。

谢谢。

【问题讨论】:

Link 可以帮忙 是的,使用 facebook sdk。 您从服务器或 facebook SDK 获得的访问令牌过期错误? 不是直接来自 facebook sdk。实际上我已经将它保存在服务器上,并且我们从服务器端向图形 API 发出了请求。但 60 天后存储在服务器上的访问令牌将过期。 【参考方案1】:

使用 Facebook SDK 的原生移动应用将获得长期访问权限 代币,有效期约为 60 天。这些令牌将被刷新一次 每天,当使用您的应用的人向 Facebook 的 服务器。如果没有请求,令牌将在大约 60 后过期 天,此人将不得不再次通过登录流程 获取新令牌。

来自 FB 文档。 ^

看来用户将不得不再次在应用程序中完成登录过程。

【讨论】:

是的,用户必须在 60 天后或令牌过期后进行登录过程。从同一个文档中,我发现我们还可以通过调用 Facebook 服务器从服务器端获取新的长寿命令牌。我还有一个问题,如果从以前的身份验证获得的长期访问令牌在服务器上已经过期,我们可以从该令牌中获取新的长期访问令牌吗?

以上是关于如何在过期之前获取新的 FacebookSDKAccessToken?的主要内容,如果未能解决你的问题,请参考以下文章

如果生成了新的 JWT,如何使 JWT 过期

获取新的访问令牌以处理过期的访问令牌时,grant_type 参数无效或参数丢失

使用 Angular 和 JWT 令牌持续登录

在 JavaScript 中存储刷新令牌,获取新的访问令牌

如何使用 ajax 在 LARAVEL 中获取新的 CSRF 令牌

Spring Boot:过期后如何生成新的访问令牌?