优雅地扩展Facebook服务器端访问令牌

时间:2012-05-21 16:55:11

标签: facebook access-token extending

我有一个曾经使用过offline_access的应用程序,显然需要更改,因为它已经消失了。

我们使用此权限将消息发布到用户的Facebook墙上,当他们通过任意数量的API进行交互而没有我们的后端时。我们有一个网站,连接到应用程序的iPhone,Android,Blackberry和Nokia手机上的几个移动应用程序,以及与硬件设备接口的桌面应用程序,所有这些都可能导致后端尝试发布到Facebook,但只有网站允许用户使用Facebook进行初始授权。

根据我的理解,使用服务器端身份验证获得60天的令牌,获取新令牌的唯一方法是重做身份验证过程,假设用户没有更改密码,登录到Facebook,并且没有取消授权该应用程序将只显示为一系列自动重定向。

还有其他办法吗?例如,fb_exchange_token到底做了什么?它适用于这种情况,还是只适用于通过javascript API收到的令牌?

我们可以为这些非网站用户界面做些什么,除了合并原生的facebook API并为网站做同样的事情吗?


尝试使用fb_extend_token是徒劳的。重新运行标准身份验证返回相同的令牌,但新的60天到期时间。不久之后再做一次并没有扩展令牌。我希望这意味着我每天只能做一次,而不是每次一次。

2 个答案:

答案 0 :(得分:2)

由于我使用的是服务器端流程,用户永远不会看到密钥,因此我可以稍微修改我的应用程序以使用我的APPLICATION令牌。这些密钥属于您的应用,只要用户无法撤销其权限,您就可以代表用户使用API​​。用户授权令牌可能会过期,但只要用户没有明确地从他们允许的应用中删除您的应用,您的令牌就会继续允许您使用/ user / URL发布到墙上,/ me / URL不会起作用,因为您的令牌已绑定到您的应用。

答案 1 :(得分:1)

我相信一旦offline_access的弃用完成,获取/交换访问权限是获得所需内容的唯一方法。

任何在弃用之前都可以离线访问的人仍然可以正常使用您的应用程序,至少60天。一旦这段时间结束,您必须重新授权用户并将他们的访问权限延长60天。要执行此操作,您需要登录并授权您的应用程序(如有必要)。然后使用fb_exchange_token扩展其访问令牌,这样可以持续60天。

我确定你已经看过了,但是this文章中有所概述,更具体地说是关于以前使用offline_access的部分。我还发现this帖对升级很有用。 Here是进一步详细说明如何处理无效令牌的另一个链接。