我正在尝试使用python脚本阅读页面的facebook对话.有了这段代码
import facebook
at = "page access token"
pid = "page id"
api = facebook.GraphAPI( at )
p = api.get_object( 'me/conversations')
print p
Run Code Online (Sandbox Code Playgroud)
我得到一个包含以下内容的字典
{'paging': {'next': 'https://graph.facebook.com/v2.5/1745249635693902/conversations?access_token=<my_access_token>&limit=25&until=1454344040&__paging_token=<my_access_token>', 'previous': 'https://graph.facebook.com/v2.5/1745249635693902/conversations?access_token=<my_access_token>&limit=25&since=1454344040&__paging_token=<my_access_token>'}, 'data': [{'link': '/Python-1745249635693902/manager/messages/?mercurythreadid=user%3A100000386799941&threadid=mid.1454344039847%3A2e3ac25e0302042916&folder=inbox', 'id': 't_mid.1454344039847:2e3ac25e0302042916', 'updated_time': '2016-02-01T16:27:20+0000'}]}
Run Code Online (Sandbox Code Playgroud)
这些领域是什么?如何获取消息的文本?
编辑:我尝试通过添加来询问"消息"字段
msg = api.get_object( p['data'][0]['id']+'/messages')
print msg
Run Code Online (Sandbox Code Playgroud)
但它只返回相同的字段.我已经在API文档中搜索了一段时间,但我没有找到任何有用的信息.甚至可以使用python阅读facebook页面对话的消息内容吗?
我自己找到了答案; 这个问题没有得到很好的解决,也与我正在寻找的东西不符.
我想获得一个页面的facebook对话消息的内容.在facebook图形API文档之后,这可以通过询问对话({page-id}/conversation),然后是所述对话中的消息({conversation-id}/messages,https://developers.facebook.com来实现. /docs/graph-api/reference/v2.5/conversation/messages),最后要求消息本身应返回包含所有字段的dict,包括内容(/ {message-id},https:// developers. facebook.com/docs/graph-api/reference/v2.5/message).
至少这是我认为应该如此; 但是最后一个请求只返回字段'created_time'和'id'.
我真正想要的是获取"消息"(内容)字段的方法.我假设函数graph.get_object()来自官方python facebook sdk应该已经返回所有字段,因为它只有一个记录的参数(http://facebook-sdk.readthedocs.org/en/latest/ api.html) - 请求对象的图形路径,不允许添加其他字段请求.
我正在寻找的答案是在另一个问题,Python Facebook SDK中的Request字段.显然,可以通过传递带有这些字段的**args dict以及请求的路径来请求特定字段(否则不返回).在对Facebook图形的GET请求中,这相当于添加
?fields=<requested fieds>
Run Code Online (Sandbox Code Playgroud)
到对象路径.
这是工作代码:
#!/usr/bin/env python
import facebook
at = <my access token>
pid = <my page id>
api = facebook.GraphAPI( at )
args = {'fields' : 'message'} #requested fields
conv = api.get_object( 'me/conversations')
msg = api.get_object( conv['data'][0]['id']+'/messages')
for el in msg['data']:
content = api.get_object( el['id'], **args) #adding the field request
print content
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4833 次 |
| 最近记录: |