【发布时间】:2016-12-14 14:53:02
【问题描述】:
我正在使用 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() 方法中传递,并且 print(post['message']) 和 print(post) 返回空白结果。
如何解决这个问题,让我在我的墙上以及我的墙上获得所有朋友帖子的 ID 和消息,好吗?我真的迷路了,什么都试过了。谢谢。
【问题讨论】:
-
这是预期行为,没有计划修改此聚合功能以在聚合发生后返回所有帖子。
标签: python facebook facebook-graph-api