Facebook graphAPI用python获取朋友帖子的id

时间:2016-04-01 02:51:33

标签: python facebook facebook-graph-api

我正在使用python facebook-sdk(修改后的示例代码)从我的Facebook墙上获取提要。这意味着我的帖子和朋友的帖子。我的脚本工作得很好,直到有超过2个朋友的帖子 - Facebook开始分组这些帖子,我不能再获得该帖子的ID - 只有第一个。

这就是我所说的“分组帖子”: fb grouped wall posts

这是我的代码:

import facebook
import requests


def get_it(post):

    print(post['message'])
    print(post)

access_token = '<mytoken>'
user = 'me'
graph = facebook.GraphAPI(access_token)

posts = graph.get_connections(user, 'feed', limit=20)
print(posts) 

while True:
    try:
        [get_it(post=post) for post in posts['data']]

        posts = requests.get(posts['paging']['next']).json()
    except KeyError:
        break

如果朋友的帖子不超过2个并且没有分组,那么这些照片会给我成功的结果。 这个词典看起来像这样 打印(公告):

 {'paging': {'previous': 'https://graph.facebook.com/v2.5/XXX&access_token=XXX&__paging_token=XXX&__previous=1', 'next': 'https://graph.facebook.com/v2.5/XXX/feed?limit=20&access_token=XXX&__paging_token=XXX'}, 'data': [{'id': 'XXXXXX_XXXX', 'created_time': '2016-03-31T23:58:41+0000', 'message': 'test'}, {'id': 'XXX_XXX', 'created_time': '2016-03-31T23:33:43+0000', 'message': 'hehe'}]}

一切都很顺利,我可以使用帖子ID作为get_it方法。

然而,一旦有超过2个朋友的帖子,它就会被突然分组 一个新的“故事”出现在词典中:

'data': [{'created_time': '2016-04-01T02:32:37+0000', 'story': 'XXX wrote on your Timeline.', 'id': '123_456'}, {'created_time': '2016-03-31T23:58:41+0000', 'message': 'test', 'id': '6666_6666'}

“故事”ID仅适用于分组墙帖中的最后评论。

此外,由于某种原因,下一个dict字段不会在get_it()方法中传递并打印(post ['message'])并且print(post)返回空白结果。

如何解决这个问题,所以我在墙上和我的帖子上都会收到所有朋友帖子的ID和消息,好吗?我真的迷路了,尝试了一切。谢谢。

1 个答案:

答案 0 :(得分:0)

这是facebook故意更新,以停止脚本和垃圾邮件的自动化。

不幸的是,它不会被回滚。