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

优雅地扩展Facebook服务器端访问令牌,facebook,access-token,extending,Facebook,Access Token,Extending,我有一个应用程序,过去使用离线访问,这显然需要改变,因为这将消失 当用户通过任何数量的API在没有我们后端的情况下进行交互时,我们使用此权限将消息发布到用户的facebook墙。我们有一个网站,iPhone、Android、Blackberry和诺基亚手机上的几个移动应用程序连接到该应用程序,还有一个与硬件设备接口的桌面应用程序,所有这些都可能导致后端试图发布到facebook,但只有该网站允许用户使用facebook进行初始授权 据我所知,使用服务器端身份验证可以获得60天的令牌,获得新令牌的

我有一个应用程序,过去使用离线访问,这显然需要改变,因为这将消失

当用户通过任何数量的API在没有我们后端的情况下进行交互时,我们使用此权限将消息发布到用户的facebook墙。我们有一个网站,iPhone、Android、Blackberry和诺基亚手机上的几个移动应用程序连接到该应用程序,还有一个与硬件设备接口的桌面应用程序,所有这些都可能导致后端试图发布到facebook,但只有该网站允许用户使用facebook进行初始授权

据我所知,使用服务器端身份验证可以获得60天的令牌,获得新令牌的唯一方法是重新执行身份验证过程,假设用户没有更改密码、登录到facebook并且没有取消授权,则应用程序将显示为一系列自动重定向

还有别的办法吗?例如,fb_交换_令牌的具体用途是什么?它是否适用于这种情况,还是仅适用于通过javascript API接收的令牌

除了合并本机facebook API和为网站做同样的事情之外,我们还能为这些非网站用户界面做些什么



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

我相信,一旦离线访问的弃用完成,获取/交换访问令牌是完成您需要的唯一方法

在弃用之前拥有脱机访问权限的任何人仍然可以正常使用您的应用程序,至少60天。一旦此期限结束,您必须重新授权用户并将其访问令牌再延长60天。要做到这一点,请让他们登录,并授权您的应用程序(如果需要)。然后,您使用fb_交换_令牌扩展他们的访问令牌,这样可以使用60天


我相信你们已经看过了,但这篇文章中都有介绍,更具体地说是关于以前使用离线访问的部分。我还发现这篇文章对升级很有用。是另一个详细说明如何处理无效令牌的链接。

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

我现在通过常规后端流收到的令牌有效期为60天,尝试请求fb_exchange_令牌根本不会更改它们,因此我只能看到令牌的过期时间倒计时。我已在测试应用程序中启用了迁移,因此,一旦他们完全获取权限,我可以信任此行为吗?我找不到任何关于什么是fb_exchange_代币的好文档,所以我想客户端流程可能会使用它来交易短期代币,您可以通过这种方式获得长期代币,比如,如果您使用服务器端流进行了身份验证,那么扩展您现在拥有的令牌不会做任何事情,因为它们已经设置为60天。我假设您现在拥有的代币是通过离线访问权限获得的。FB将这些时间从永远缩短到60天,以准备离线访问。只有当您获得一个新的短期代币时,您才能再次将其延长到60天。从文档中可以看到:“如果你想刷新一个仍然有效的长期访问令牌,你必须首先获得一个新的短期用户访问令牌”@spoonybard896-假设我有一个60天访问令牌。我们在第59天-明天代币将过期。我向用户发送一封自动电子邮件以再次登录。这会延长访问令牌的寿命吗?当我现在尝试它时,它没有,它只是返回相同的访问令牌。那么,不同的方式,有可能获得一个全新的访问令牌吗?(一个新的短命的,然后我转换成60天的)?FB.Login始终返回现有的未过期访问令牌。据我所知,一旦令牌被扩展一次,你就不能再扩展它。你必须得到一个新的代币。如果您在第59天重新验证,您将获得相同的令牌,因为它尚未过期。我认为您只需等待它过期,在您的身份验证流中检测到它,然后在此时指示用户重新进行身份验证。一旦过期,您应该在重新身份验证时获得一个新的令牌,然后可以扩展该令牌。在那之前,你应该拿回60天的延长代币。@spoonybard896-这真的很有用。我试图使用fb_exchange_令牌在后端扩展令牌以进行测试。那么该方法只适用于扩展短期令牌?看起来是这样的,因为我正在测试的令牌来自一个测试应用程序,其中有一个新用户从未请求过脱机访问权限,并进行了服务器端身份验证,并使用授权代码获得了一个长寿令牌,而我从未能够扩展该令牌。我假设如果我再次进行授权重定向,我会得到一个新的令牌。考虑到60天的到期时间,这仍然有效吗?我是不是在试图解决一个问题,而这个问题只是因为我试图向“/me”而不是用户发帖?不知道你在问什么?使用应用程序令牌实际上是绕过令牌t到期时间的一种方法