在离开 FB 平台一段时间后,我回来构建一个 FB 应用程序,我看到旧的 offline_access 权限已被删除并替换为 long(ish)-expiry 令牌[1]。
因此,现在似乎任何需要根据外部应用程序中的计划或某些活动将数据推送到 Facebook 的外部应用程序都需要处理已过期的长期访问令牌。这更令人沮丧,因为现在退出 FB 的用户也将杀死任何长期到期的令牌 [2],而在此之前,即使用户退出,offline_access 仍然存在。
我仍处于思考解决方案的阶段,但有两个想法浮现在脑海:
1) 每当我的应用程序联系具有 FB 集成的用户时,他们被要求单击一个链接,该链接将触发与 FB 的重新身份验证以获取新的长期访问令牌。我的用户通常会在长期访问令牌的生命周期内多次联系,因此这应该有效地在他们需要的时间内持续更新长期访问令牌(即使它确实给我的应用程序增加了一些烦人的摩擦)
2)因为我不能保证 1)总是有效(例如,由于用户没有点击我的应用程序电子邮件通知中的重新认证链接或他们退出 Facebook),我还必须处理失败的 FB 交互通过将它们放置在保留队列中并通过电子邮件发送给用户以明确要求他们再次授予长期访问令牌。不酷,但我看不到其他选择。如果在 X 尝试要求他们重新授予权限后他们没有响应请求,我只需将任务装箱并通过电子邮件向他们解释这是由于 FB 限制,而不是我的应用程序。再次,不酷。
是否有人必须提出更好的解决方案来保持与具有身份验证/显式权限的用户帐户交互的能力?我很想听听你做了什么。
(当然,这一切都在等待我重新阅读 FB ToS - 这完全有可能违反规则,这将更加令人沮丧)
编辑/更新:我需要推送的数据是相册中的图像,该相册将从各种来源到达我的服务器,然后将被推送到相应用户的相册中(当然,需要他们预先授予的权限)。我无法保证在图像到达我的服务器时有任何基于 Web 的最终用户交互,以便让最终用户授予我一个新的短寿命令牌。基本上,offline_access
对于这个 IMO 来说真的是理想的。
更新 2:注意:当需要授予或扩展令牌时,用户不一定会使用我的应用程序或 Facebook,这对我的用例来说真的很关键。
[1] https://developers.facebook.com/roadmap/offline-access-removal/ [2] http://developers.facebook.com/blog/post/2011/05/13/how-to--handle -过期访问令牌/