我是Facebook页面的管理员。我正在构建一个网络应用程序,在某些情况下,它将在Facebook上作为该页面发布。
对于大多数API,我只会获得一个API密钥,并在从我的应用程序连接到API时提供。但Facebook期望访问令牌而不是API密钥。 (具体来说,在这种情况下,它需要一个"页面访问令牌"。)
我正在尝试弄清楚如何获得尽可能永久的网页访问令牌。
在跳过一堆深奥的,未记录的箍(见here和here)以获得一个不会过期的令牌之后,我有了这个工作。当我通过Facebook's Access Token Debugger运行令牌时," Expires"字段读取"从不"。一切都很好。
但是,第二天,我的令牌无论如何都变得无效了。 Access Token Debugger和我应用程序调用Facebook的PHP SDK都开始返回此错误:
验证访问令牌时出错:会话与当前存储的会话不匹配。这可能是因为用户自创建会话以来已更改密码,或者Facebook出于安全原因更改了会话。
似乎令牌可能对a variety of reasons无效(但这篇文章已有五年了,所以谁知道 - Facebook每两周更改一次)。我没有更改密码。 (不过我可能已经退出了Facebook。)Facebook没有提供有关此特定令牌可能无效的具体信息。
我还看到了一些名为offline_access
的权限的引用,但是Facebook seems to have removed this。
我想我的问题有两个:
一般来说,我从服务器调用Facebook API时发现Facebook令牌身份验证非常脆弱。令牌系统似乎主要设计为允许其他用户授予(或撤销)对我的应用的各种帐户访问权限。但这不是我正在做的事情 - 我试图获取一个让我发布到我拥有的网页的令牌。对于这种情况,Facebook积极的代币无效成为一种严重的责任。如果我的访问令牌(以及我的Facebook集成)随时可能随机停止工作,我无法启动我的应用程序,要求我生成新令牌并更新应用程序。 这似乎很荒谬。是否有替代方法向Facebook进行身份验证?
如果页面访问令牌实际上是向Facebook验证我的应用程序以便发布为我的页面的最佳方式:我如何确保我的令牌不会自发地成为无效
我讨厌为Facebook开发:/感谢您提供的任何见解。
答案 0 :(得分:2)
扩展页面标记永远有效。如果您更改密码或更改应用程序的App Secret,它们只会失效。真的没有魔法,检查令牌是否仍然有效显然不是一个坏主意,但这取决于你。例如,当使用令牌发生错误时,您可以向自己发送自动电子邮件,以便您可以刷新它。但如果您更改密码,它确实会发生。
链接: