从 Facebook 中的应用令牌获取页面令牌不起作用

Posted

技术标签:

【中文标题】从 Facebook 中的应用令牌获取页面令牌不起作用【英文标题】:Getting a page token from an app token in Facebook is not working 【发布时间】:2021-11-15 03:45:26 【问题描述】:

我正在尝试使用 Facebook 应用令牌而不是用户令牌来获取页面令牌。但是我只能使用用户令牌而不是应用令牌获取页面令牌。

这就是我正在做的事情。首先我以这种方式获取应用令牌:

https://graph.facebook.com/oauth/access_token?client_id=[app id omitted]&client_secret=[secret omitted]a&grant_type=client_credentials

然后我尝试使用应用令牌获取页面令牌:

https://graph.facebook.com/[page id omitted]?fields=access_token&access_token=[app token omitted]

但这是回应:

 
    "error": 
        "message": "(#100) Object does not exist, cannot be loaded due to missing permission or reviewable feature, or does not support this operation. This endpoint requires the 'pages_read_engagement' permission or the 'Page Public Content Access' feature or the 'Page Public Metadata Access' feature. Refer to https://developers.facebook.com/docs/apps/review/login-permissions#manage-pages, https://developers.facebook.com/docs/apps/review/feature#reference-PAGES_ACCESS and https://developers.facebook.com/docs/apps/review/feature#page-public-metadata-access for details.",
       "type": "OAuthException",
       "code": 100,
       "fbtrace_id": "[trace id omitted]"
   

我的应用程序中的所有权限都具有标准访问权限,并且我是页面的管理员。我还需要高级权限吗?

我尝试使用此处提供的工具检查我的应用令牌:

https://developers.facebook.com/tools/debug/accesstoken/

但奇怪的是,我在输出中看不到任何权限。这些是我检查令牌后得到的所有信息:

App ID  [id of the app omitted] : DemoApp
Type    App

我想知道从应用令牌获取页面令牌是否是允许的操作。我在这里错过了什么?

【问题讨论】:

【参考方案1】:

无法使用应用令牌获取页面令牌。

页面和您的应用程序之间没有任何联系 - 那么 API 如何确定您是否应该有权访问该特定页面?

用户可以是页面的管理员/版主 - 因此,他们的令牌可用于获取页面令牌,因为他们是页面的管理员这一事实证明了访问权限应该是授予。

【讨论】:

用户既是页面管理员又是应用程序中的管理员角色之一的事实是否证明应该授予访问权限? 如果 Facebook 决定以这种方式实现它,我可以,但他们没有。这种特殊情况不是常态——对于大多数应用程序(可能)来说,开发应用程序的人和最终将使用它的人是不一样的。 我明白了。我希望我可以使用应用程序令牌,因为我想避免任何类型的手动过程,因为我想在后端使用它。但是,看起来我可以获得页面令牌的唯一方法是通过短期用户令牌和长期用户令牌,这意味着使用具有登录对话框的 javascript SDK。有什么方法可以避免该 UI 获取用户令牌? 不,没有用户交互就无法创建普通用户令牌。虽然有系统用户,但他们的令牌不会过期 - developers.facebook.com/docs/marketing-api/system-users 但这是在业务管理 API 的范围内,所以如果您的应用程序不是“业务”应用程序,我不知道您是否可以使用这些应用程序。

以上是关于从 Facebook 中的应用令牌获取页面令牌不起作用的主要内容,如果未能解决你的问题,请参考以下文章

自动进行Facebook页面访问令牌生成

从授权中获取 facebook 令牌访问权限

获取 xmpp_login 访问令牌在 Facebook iOS SDK 中不起作用

获取我的 Facebook 应用程序的访问令牌

使用没有访问令牌的 Facebook Graph API 获取公共页面状态

如何从网站获取 Facebook 身份验证令牌