【发布时间】:2023-03-13 08:48:01
【问题描述】:
我是 Facebook 主页的管理员。我正在构建一个网络应用程序,在某些情况下,它会在 Facebook 上作为该主页发布。
对于大多数 API,我只需获取一个 API 密钥,并在从我的应用程序连接到 API 时提供该密钥。但 Facebook 需要访问令牌而不是 API 密钥。 (具体来说,在这种情况下,它需要一个“页面访问令牌”。)
我正在尝试弄清楚如何获取尽可能永久的页面访问令牌。
为了获得一个不会过期的令牌,在跳过了一堆深奥的、无证的箍(参见here 和here)之后,我有了这个工作。当我通过Facebook's Access Token Debugger 运行令牌时,“过期”字段显示为“从不”。世界上一切都很好。
但是,第二天,我的令牌无论如何都失效了。访问令牌调试器和我的应用程序对 Facebook 的 PHP SDK 的调用都开始返回此错误:
验证访问令牌时出错:会话与当前存储的会话不匹配。这可能是因为用户在创建会话后更改了密码,或者 Facebook 出于安全原因更改了会话。
似乎a variety of reasons 的令牌可能会失效(但这篇文章已有 5 年历史了,所以谁知道——Facebook 每两周更改一次)。我没有更改密码。 (不过,我可能已经退出了 Facebook。)Facebook 没有具体说明为什么这个特定的令牌可能会变得无效。
我还看到了一些对名为offline_access 的权限的引用,但Facebook seems to have removed this。
我想我的问题是双重的:
总的来说,我发现 Facebook 令牌身份验证在从服务器调用 Facebook API 时非常脆弱。令牌系统的设计似乎主要是为了允许其他用户授予(或撤销)对我的应用程序的各种帐户访问权限。但这不是我正在做的——我试图获得一个令牌,让 我 发布到 我 拥有的页面。在这种情况下,Facebook 激进地使代币失效成为一项严重的责任。如果我的访问令牌(以及我的 Facebook 集成)可能随时随机停止工作,我无法启动我的应用程序,这需要我生成新令牌并更新应用程序。 这似乎很荒谬。为了我的目的,是否有其他方法可以对 Facebook 进行身份验证?
如果页面访问令牌实际上是向 Facebook 验证我的应用以作为我的页面发布的最佳方式:我如何确保我的令牌不会自发失效?
我讨厌为 Facebook 开发:/感谢您提供的任何见解。
【问题讨论】:
标签: facebook facebook-graph-api