【问题标题】:Reading page's messages with Python Facebook SDK使用 Python Facebook SDK 读取页面消息
【发布时间】:2015-09-09 19:32:32
【问题描述】:

基本上我需要在 python 中使用 facebook SDK 获取页面的所有消息。 遵循一些教程,我到了这一点:

import facebook

def main():
  cfg = {
    "page_id"      : "MY PAGE ID", 
    "access_token" : "LONG LIVE ACCESS TOKEN"  
    }

  api = get_api(cfg)
  msg = "Hre"
  status = api.put_wall_post(msg) #used to post to wall message Hre
  x = api.get_object('/'+str(MY PAGE ID)+"/conversations/") #Give actual  conversations


def get_api(cfg):
  graph = facebook.GraphAPI(cfg['access_token'])
  resp = graph.get_object('me/accounts')
  page_access_token = None
  for page in resp['data']:
    if page['id'] == cfg['page_id']:
      page_access_token = page['access_token']
  graph = facebook.GraphAPI(page_access_token)
  return graph

if __name__ == "__main__":
  main()

第一个问题是api.get_object('/'+str(MY PAGE ID)+"/conversations/")返回一个包含许多信息的字典,但我想看到的是他们发送给我的消息,而现在它打印发送给我的消息的用户 ID。

输出如下所示:

{u'paging': {u'next': u'https://graph.facebook.com/v2.4/571499452991432/conversations?access_token=Token&limit=25&until=1441825848&__paging_token=enc_AdCqaKAP3e1NU9MGSsvSdzDPIIDtB2ZCe2hCYfk7ft5ZAjRhsuVEL7eFYOOCdQ8okvuhZA5iQWaYZBBbrZCRNW8uzWmgnKGl69KKt4catxZAvQYCus7gZDZD', u'previous': u'https://graph.facebook.com/v2.4/571499452991432/conversations?access_token=token&limit=25&since=1441825848&__paging_token=enc_AdCqaKAP3e1NU9MGSsvSdzDPIIDtB2ZCe2hCYfk7ft5ZAjRhsuVEL7eFYOOCdQ8okvuhZA5iQWaYZBBbrZCRNW8uzWmgnKGl69KKt4catxZAvQYCus7gZDZD&__previous=1'}, u'data': [{u'link': u'/communityticino/manager/messages/?mercurythreadid=user%3A1055476438&threadid=mid.1441825847634%3Af2e0247f54f5c4d222&folder=inbox', u'id': u't_mid.1441825847634:f2e0247f54f5c4d222', u'updated_time': u'2015-09-09T19:10:48+0000'}]}

基本上是pagingdata。 鉴于这样有没有办法阅读对话?

【问题讨论】:

  • 由于您刚刚在这里公开了您的长期页面访问令牌,您应该现在去更改您的 Facebook 密码以使其无效。
  • 你需要询问你想要的字段
  • @CBROE 感谢您的回答!真的没用
  • WizKid 我在哪里可以找到我想要的字段?

标签: python facebook sdk


【解决方案1】:

为了获取消息内容,您首先需要请求对话中的单个消息,可通过您复制的字典中的“id”字段访问,结果为 x = api.get_object('/'+str(MY PAGE ID)+"/conversations/") #给出实际对话

您可以通过调用来请求对话中的消息

msg = api.get_object('/'+<message id>)

这里变得很棘手,因为按照图形 api 文档,您应该收到一个包含所有可能字段的字典,包括“消息”(内容)字段。然而,该函数仅返回字段“created_time”和“id”。 感谢另一个问题Request fields in Python Facebook SDK 我发现您可以通过添加一个字典来请求这些字段,该字典在 graph.get_object() 函数的参数中指定了此类字段。据我所知,这在 python 的 facebook sdk 参考中没有记录。

正确的代码是

args = {'fields' : 'message'}
msg = api.get_object('/'+<message id>, **args)

类似问题:Read facebook messages using python sdk

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    相关资源
    最近更新 更多