向用户令牌添加新权限后,Facebook 页面访问令牌损坏

Facebook page access token broken after adding new permissions to user token

根据 doc on Facebook page access token 需要采取以下步骤来获取长期页面访问令牌。

  1. 扩展具有 manage_pages 权限的用户访问令牌
  2. 使用扩展用户访问令牌通过 /userId/accounts 端点获取页面访问令牌。

此过程运行良好,我能够正确获取和使用页面访问令牌。

当用户向应用程序授予新权限时出现问题 - 例如'publish_actions'允许应用程序在页面的时间线上post,使用上述获取的页面访问令牌机制不能正常工作。

直到大约 6 到 8 周前,新的 publish_action 权限将允许先前保存的页面访问令牌在页面时间轴上 post 没有任何问题。此功能似乎已损坏,我收到以下错误:

{"error":{"message":"(#200) The user hasn't authorized the application to perform this action","type":"OAuthException","code":200

使用 Facebook 调试器工具调试访问令牌时 - 它显示保存的页面访问令牌确实使用新权限进行了修饰,如下所示:

App ID  XXXXXXXXXXXX : App Name
Profile ID  999999999999 : Page Name
User ID  9999999999999999 : User Name
User last installed this app via API v2.x
Issued  1454463877 (40 minutes ago)
Expires Never
Valid   True
Origin  Web
Scopes  email, manage_pages, publish_actions, public_profile

因此,尽管此页面令牌具有 publish_actions 权限,但它不能 post 在页面的时间轴上。这最近停止工作并寻找遇到类似问题并设法解决它的任何其他人。

顺便说一句,我已经尝试在用户授予 publish_actions 权限时使用新生成的用户 access_token 刷新页面访问令牌。使用新的用户访问令牌完成上述 2 个步骤,似乎 return 相同的页面访问令牌并且它继续失败 post 在时间轴上...

非常感谢任何帮助。

该问题与使用不正确的权限有关。 Facebook 引入了一个新的 'Publish_pages' 权限,应该用于在商业页面上发帖。我们使用的 publish_action 是无效的(自 v2.3 以来或附近的某个地方 - 我们使用的是图表的 v2.5 API 所以它导致了一个问题)。

Facebook 对我们的错误报告做出了快速响应,并提供了帮助解决此问题的指南(我应该早点发布此答案)。