Facebook的 弃用 的 offline_access
许可即将于2012年5月发布,文档未向我们提供有关如何处理它的足够信息。
我们有一个iOS应用程序和相应的服务,它可以为Facebook提供强大的功能并与Facebook集成,以便在应用程序内部利用用户的朋友列表(因此,如果您的FB朋友也使用该应用程序,您可以更轻松地连接)。这就像所有社交应用程序似乎都在工作,所以这里没什么特别的。
客户
我们的应用使用 Facebook iOS SDK 允许用户登录,我们目前要求 offline_access
。令牌会保留在我们的iOS应用程序中,但也会发送到保存它的服务器。客户端代表用户发布更新到用户的新闻源(我们也要求 publish_stream
允许)。
服务器
我们的服务器会定期检查用户的FB好友是否正在使用我们的应用程序。下次用户登录时,我们会以某种方式公开内容和关系,以宣传该用户的朋友。服务器还代表用户定期连接到图形API并获取用户的当前好友列表。这样我们就可以解释用户关系的变化,并将它们反映在我们的应用中。当用户当前没有使用该应用时,我们会这样做,以便他们在下次使用时获得最佳体验。为了实现这一点,我们的iOS应用程序将访问令牌发送到它使用的服务器以及我们要求的原因 offline_access
。
注意: 如果用户明确地退出我们的应用程序,我们将从客户端和服务器中删除访问令牌。
问题
现在已经不再使用我们可以使用的永久访问令牌,我正在尝试找出仍然启用我们的场景的最佳实践,同时利用Facebook新的处理和扩展访问令牌的新方法。遗憾的是,文档并不完全有用。
问题
一个。 通过最新的Facebook iOS SDK进行身份验证时,您获得的访问令牌的默认生命周期是多少? 这个文件 说扩展令牌请求会给你一个持续60天的令牌。这个 其他文件 讨论第一个访问令牌请求,并提到不同的有效性,但它是 不明 它是否谈论具体的有效时间:
(重点是我的)
从Facebook获取访问令牌时,它将有效 在一段时间内立即可用于API的请求 由Facebook定义。在该时间段过去之后,访问令牌 被认为已经过期,用户需要 再次进行身份验证,以便您的应用获得全新访问权限 令牌。 给定访问令牌有效的持续时间取决于 它是如何产生的。
还有一些事件可能导致访问令牌成为 在预期的到期时间之前无效。这些事件包括用户 更改密码,一个应用程序刷新它的App Secret。 处理不同的访问令牌到期时间,并处理案例 当访问令牌在其预期到期时间之前变为无效时 对于建立强大的社交体验至关重要。
B. 对于客户端,既然访问令牌不一定很长,对我们来说是正确的方法:
让我们使用FB登录,然后在访问令牌过期时进行检测。如果是,那么调用FB iOS SDK重新认证/重新授权? (这应该只是触发用户反弹到FB iOS应用程序,并且在大多数情况下会立即通过新的访问令牌返回到我们的应用程序)。
C。 根据 这篇博文 我发现,你只能扩展一次访问令牌:
我可以用60天的访问令牌换取新的60天访问令牌吗?
不,对不起,你不能。您只能交换有效(意味着当前) 扩展的用户访问令牌。你不能扩展已经 扩展访问令牌。
在客户端上,我可以通过提示重新认证/重新授权来解决这个问题,正如我在问题B中提到的那样。但是,这在我们的服务器上不起作用。我们当然可以将服务器更新一次到60天,但第61天会发生什么?服务器只是停止能够同步朋友的列表?
D. 每次应用程序启动或从睡眠中重新补充时,检查FB访问令牌的有效性似乎是有意义的。我们的iOS应用程序检查此功能的最佳方式是什么?是否有建议的端点来调用验证令牌?我们应该打电话吗? https://graph.facebook.com/me
传递访问令牌并检查响应?
注意:我们当然可以记录下来 expires
我们获得最初扩展令牌的时间,但这不可靠,因为用户可以随时撤销我们的应用程序的权限,这使得 expires
时间不可靠的有效数据点