我正在尝试使用python脚本阅读页面的facebook对话。使用此代码
import facebook
at = "page access token"
pid = "page id"
api = facebook.GraphAPI( at )
p = api.get_object( 'me/conversations')
print p
我收到一个包含以下内容的词典
{'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'}]}
那些领域是什么?我怎样才能得到消息的文本?
编辑:我尝试通过添加
来询问“消息”字段 msg = api.get_object( p['data'][0]['id']+'/messages')
print msg
但它只返回相同的字段。我已经在API文档中搜索了一段时间,但我没有找到任何有用的信息。甚至可以使用python读取Facebook页面对话的消息内容吗?
答案 0 :(得分:6)
我自己找到了答案;问题没有得到很好的解决,也与我正在寻找的问题不符。
我想获取一个页面的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; created_time&#39;和&#39; id&#39;。
我真正想要的是一种获取“消息”的方法。 (内容)领域。我假设函数graph.get_object()来自官方python facebook sdk应该在任何情况下返回所有字段,因为它只有一个记录的参数(http://facebook-sdk.readthedocs.org/en/latest/api.html) - 所请求对象的图形路径,以及不允许添加额外的字段请求。
我正在寻找的答案是在另一个问题Request fields in Python Facebook SDK。 显然,通过传递带有这些字段的** args dict以及所请求的路径,可以要求特定字段(否则不会返回)。 在对Facebook图形的GET请求中,这相当于添加
?fields=<requested fieds>
到对象路径。
这是工作代码:
#!/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