Hub*_*ast 6 facebook facebook-graph-api
我已经注册了一个Facebook-App并创建了一个具有我需要的所有权限的令牌.其中
manage_pages read_mailbox read_page_mailbox现在我想使用Facebook开放图形API从我自己的FB页面读取一些数据.我想阅读页面收到的私人消息以及我代表我的页面上的一些粉丝发送的消息.
我知道我可以通过发送这样的http请求来获取所有信息:
https://graph.facebook.com/{page-id}/{object}?access_token={token}
Run Code Online (Sandbox Code Playgroud)
{something}实际值的占位符在哪里.为了给出一个工作示例,我可以通过发送此请求来阅读我页面上显示的帖子:
https://graph.facebook.com/141928949155955/posts?access_token={my secret token}
Run Code Online (Sandbox Code Playgroud)
正如我所说,这项工作正常,因为两年多了.(我只需要不时更新令牌)
但现在我想阅读页面和它的粉丝之间的私人谈话.我想提取所有会话并将其插入电子表格中.我想做一次,也许再过一两年.我可以通过复制和粘贴为每个对话从浏览器窗口手动提取它们,但由于会话太多,我认为花费更少的时间让程序为我完成.
如果我理解Facebook文档是正确的,那么我必须使用的关键字conversations.但我明白了:
https://graph.facebook.com/141928949155955/conversations?access_token={secret token}
{
"error": {
"message": "(#210) Subject must be a page.",
"type": "OAuthException",
"code": 210
}
}
Run Code Online (Sandbox Code Playgroud)
但是141928949155955 是一个页面.我不知道我做错了什么.我必须发送哪些正确的请求来接收页面私人谈话?
编辑(6月16日):
我可以通过这个请求阅读我的个人对话:
https://graph.facebook.com/me/conversations?access_token={secret token}
Run Code Online (Sandbox Code Playgroud)
但我不想阅读我作为一个人所做的对话.我需要我的一个页面.
Hub*_*ast 12
我找到了解决问题的方法.(谢谢kush,你的回答很有帮助,但我想补充更多信息)
我的问题是我误解了错误消息"主题必须是一个页面".我认为"主题"是指查询字符串中的一部分.但它指的是令牌!像"令牌必须是页面访问令牌"这样的消息可以让我在两年多的时间里找到不必要的搜索周!当你无法定义"主题"是什么时,你如何使用像"主题"这样的术语?
所以这不是查询字符串错误.这是令牌的类型!
现在这里是解决问题的完整过程(获取页面访问令牌)
获取应用程序的用户访问令牌,稍后您可以使用该令牌获取页面访问令牌
在"访问令牌:"字段中,您现在找到一个用户访问令牌的令牌.它不是页面访问令牌!此令牌具有管理页面所需的所有权限(包括权限"manage_pages"),但您不能使用它来管理页面,因为它是错误类型的令牌.您只需要出于以下原因需要此令牌:创建新令牌.
使用您刚刚创建的用户访问令牌来创建页面访问令牌
您将获得一个页面列表,每个页面都有一个"access_token"(现在是一个页面访问令牌).每个令牌都会继承您在调用"我/帐户"时使用的用户访问令牌的权限.
此页面访问令牌在一小时后过期.
如果您想要永不过期的页面访问令牌,请执行以下操作:
https://graph.facebook.com/v2.0/oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token} (不要按Enter键!)如果从一个浏览器选项卡切换到另一个浏览器选项卡时此字符串消失,请使用任何文本编辑器组合字符串并稍后将其复制到地址字段中. {app-id}以及{app-secret}仍显示您的Apps数据的浏览器选项卡中的值. {short-lived-token}为您在Graph API Explorer中的"访问令牌:"字段中找到的用户访问令牌.您的浏览器窗口现在显示一个字符串,其中包含"access_token"和"expires"字段,由&符号("&")分隔,该符号不是令牌的一部分.此令牌是一个长期存在的用户访问令牌,将在两个月后到期.
结果是具有您在步骤1.4中选择的所有权限的页面访问权限,永不过期.
祝好运!
使用页面访问令牌应该会有所帮助,因为您正在从页面阅读..
图 api 节点:GET me/accounts
me/accounts 将为您提供您所管理的页面,并使用页面信息字典中的访问令牌。
您应该从我/帐户获得以下数据
{
"data": [
{
"category": "Product/service",
"name": "Sample Page",
"access_token": "{page-access-token}",
"id": "1234567890",
"perms": [
"ADMINISTER",
"EDIT_PROFILE",
"CREATE_CONTENT",
"MODERATE_CONTENT",
"CREATE_ADS",
"BASIC_ADMIN"
]
},
}
Run Code Online (Sandbox Code Playgroud)
使用页面访问令牌作为页面管理员从页面访问数据,您将收到数据:) 让我知道这是否有效:)
| 归档时间: |
|
| 查看次数: |
11389 次 |
| 最近记录: |