我正在开发一个程序,需要阅读一个Facebook页面的帖子。我已经获得了一个永久页面令牌,该令牌可以通过API资源管理器中的“ debug_token”端点运行,并且可以看到我拥有一个没有“ manage_pages”和所有相关页面权限的到期的页面令牌:
"data": {
"app_id": "xxxxxxxxxxxxxxxx",
"type": "PAGE",
"application": "Second",
"data_access_expires_at": 1583432075,
"expires_at": 0,
"is_valid": true,
"issued_at": 1575649224,
"profile_id": "yyyyyyyyyyyyyyy",
"scopes": [
"user_events",
"email",
"read_insights",
"manage_pages",
"pages_manage_cta",
"pages_manage_instant_articles",
"pages_show_list",
"publish_pages",
"read_page_mailboxes",
"ads_management",
"ads_read",
"business_management",
"pages_messaging",
"pages_messaging_phone_number",
"pages_messaging_subscriptions",
"publish_to_groups",
"groups_access_member_info",
"public_profile"
],
...
使用相同的令牌,我查询/ {page_id} / feed,但得到的响应中没有“ from”字段:
"data": [
{
"id": "xxxxxxxxxxxxxxx_yyyyyyyyyyyyyyy",
"created_time": "2019-12-05T20:24:24+0000",
"message": "Bla bla bla"
},
{
"id": "xxxxxxxxxxxxxxx_yyyyyyyyyyyyyyy",
"created_time": "2019-11-20T18:17:54+0000",
"message": "Bla bla bla"
}
...
即使我在字段中明确要求“发件人”,我也不会找回它,并且API资源管理器会在左侧用灰色的工具提示显示该字段:“字段为空或访问令牌不允许使用“。
很显然,“发件人”字段不为空,因此是不允许的。我了解在大多数情况下这是受保护的信息,但是“提要”端点文档说
可公开识别的信息-除非您使用页面访问令牌提出请求,否则用户信息不会包含在响应中。
https://developers.facebook.com/docs/graph-api/reference/v5.0/page/feed
因此,此请求是使用页面访问令牌完成的,该页面是这些帖子的接收者的页面。顺便说一句,我自己用另一个普通帐户来做这些帖子,没有调整权限或隐私选项。希望帖子的来源知道您正在和谁聊天,对吧?
我已经搜索并尝试了其他答案,但答案有些过时,facebook API中的规则确实经常更改,所以这一切都是新鲜的(截至2019年12月)。
我要添加的最后一个相关信息是此页面和应用程序未与业务经理帐户关联。根据我的阅读,这对于我想要做的事情没有必要。
谢谢。
答案 0 :(得分:0)
好的,我自己弄清楚了。希望答案可能会帮助处于类似情况的其他人。
问题是我的应用程序具有“开发”状态,这是正确的。根据FB的以下安全文件:
- 应用程序用户只能访问在应用程序中具有角色的用户的数据。
https://developers.facebook.com/docs/apps/security/
这一额外的保护层使我的应用程序无法看到谁直接在其关联页面上发帖。
我在应用程序上为发布帐户赋予了“测试员”角色,现在响应具有预期的“发件人”字段:
"data": [
{
"id": "xxxxxxxxxxxxxxx_yyyyyyyyyyyyyyy",
"created_time": "2019-12-05T20:24:24+0000",
"from": {
"name": "Poster Name",
"id": "zzzzzzzzzzzzzzz"
},
"message": "Bla bla bla"
},
{
"id": "xxxxxxxxxxxxxxx_yyyyyyyyyyyyyyy",
"created_time": "2019-11-20T18:17:54+0000",
"from": {
"name": "Poster Name",
"id": "zzzzzzzzzzzzzzz"
},
"message": "Bla bla bla"
}
...