python - 使用 python sdk 读取 facebook 消息

标签 python facebook

我正在尝试使用 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 页面对话的消息内容吗?

最佳答案

我设法自己找到了答案;这个问题提出得不好,与我要找的不相符。

我想获取页面的 facebook 对话消息的内容。按照 facebook 图形 API 文档,这可以通过询问对话 ({page-id}/conversations),然后是所述对话中的消息 ({conversation-id}/messages, https://developers.facebook.com/docs/graph-api/reference/v2.5/conversation/messages),最后询问消息本身应该返回一个包含所有字段的字典,包括内容 (/{message-id}, https://developers.facebook.com/docs/graph-api/reference/v2.5/message )。

至少这是我认为应该的样子;然而,最后一个请求只返回字段“created_time”和“id”。

我真正想问的是获取“消息”(内容)字段的方法。我假设官方 python facebook sdk 中的函数 graph.get_object() 在任何情况下都应该返回所有字段,因为它只有一个记录的参数( 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

关于python - 使用 python sdk 读取 facebook 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157754/

相关文章:

java - 我的 Facebook 应用程序如何将消息发布到墙上?

python - 我如何 'force' python 使用特定版本的模块?

ruby-on-rails - Facebook 和设计

javascript - Iframe 应用程序 JavaScript SDK 发布对话框错误(代码 102)

python - 面临从建议下拉列表中选择第二项的问题

php - 使用 PHP SDK 通过 Graph API 限制 Facebook 页面详细信息

html - 更改 Facebook 登录按钮的宽度和高度

Python 等价于 Matlab [a,b] = sort(y)

python - 为什么列表的插入方法在我的递归中不能正常工作?

python - 在python中调用带有参数列表的函数