2

情况对我来说仍然不清楚 - 2012 年 7 月 5 日之后,如果与访问令牌相关联的用户从 Facebook 注销,桌面应用程序是否能够访问 Facebook 数据?在这里谈论的是完全删除离线访问还是仅限制离线访问 60 天?

文档 - https://developers.facebook.com/roadmap/offline-access-removal/没有给出明确的答案(恕我直言)。引用:“一旦启用迁移设置,桌面应用程序将自动返回具有较长到期时间的用户 access_tokens。但是,如果不让用户再次登录您的应用,就无法获得长期用户 access_token。”</p>

截至 4 月 30 日,我可以为桌面应用程序请求具有“offline_access”权限的访问令牌(使用 URL:https://graph.facebook.com/oauth/authorize?client_id=APPLICATION_ID&redirect_uri=http://www.facebook。 com/connect/login_success.html&scope=manage_pages,read_stream,publish_stream,offline_access )。一切正常。即使用户注销。尽管为应用程序启用了“删除离线访问权限”。

您的回答将不胜感激。

4

1 回答 1

2

刚刚完成了一个补丁来适应这些变化。至少根据我的经验,我们在一个 Web 应用程序中工作,其中更新访问令牌就像将所有内容更改为 Javascript SDK 并依赖浏览器的登录状态一样简单。这似乎是一种更合乎逻辑的方法,而不是在每个操作中交叉检查服务器端保存的长期访问令牌以查看它是否仍然有效。

从本质上讲,桌面实施将会发生的情况是访问令牌在默认情况下的寿命会更长,但仍需要在 60 天期限结束时进行续订。您的应用程序中应该有逻辑,将在对它采取行动之前检查访问令牌的有效性(或者只是尝试失败并提示失败),然后提示用户登录并重新验证 access_token 是否已过期。只要这个逻辑到位,过期的访问令牌就会触发重新验证。

如果您的应用收到短期访问令牌...

如果您想刷新仍然有效的长寿命 access_token,您必须先获取一个新的短寿命用户 access_token,然后调用下面的相同端点。返回的 access_token 将有一个新的长寿命到期时间,但是,access_token 本身可能与之前授予的长寿命 access_token 相同,也可能不同。

短期访问令牌(仅持续一个会话直到注销)将需要使用该文章中记录的端点转换为 60 天、长期到期的访问令牌。配置为新设置的桌面应用程序将默认接收此类,但仍需要在 60 天后使用新登录重新生成这些应用程序。

我同意这实现起来要笨拙得多,尤其是对于桌面应用程序,但从 facebook 的角度来看,它肯定要安全得多。如果您开始将访问令牌视为临时而非永久访问凭据,并开始更改逻辑以通过 curl 或其他一些 http post 机制检查有效性,而不是引用您的数据库,那么您将更轻松地使用调整。不要让您的架构假设保存的访问令牌的存在保证访问,并确保将它们交叉检查到 facebook 端点并在必要时提示重新登录。

于 2012-04-30T19:29:06.387 回答