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