Python:Facebook Graph API - 使用facebook-sdk的分页请求

时间:2016-05-19 14:24:56

标签: python-3.x facebook-graph-api pagination

我试图在Facebook上查询不同的信息,例如 - 朋友列表。它工作正常,但当然它只提供有限数量的结果。如何访问下一批结果?

.on('click', function(item, index, alwayzZero) {
    if (selectedThis) {
        d3.select(selectedThis).transition().attr("d", arc);
        selectedThis = null;
        selectedSlice = null;
    }
})

结果JSON确实给了我之前和之后的分页游标 - 但是我把它放在哪里?

1 个答案:

答案 0 :(得分:3)

我正在通过Python的facepy库探索Facebook Graph API(也适用于Python 3),但我想我可以提供帮助。

TL-DR:

您需要将&after=YOUR_AFTER_CODE附加到您调用的网址(例如:https://graph.facebook/v2.8/YOUR_FB_ID/friends/?fields=id,name),为您提供类似这样的链接:https://graph.facebook/v2.8/YOUR_FB_ID/friends/?fields=id,name&after=YOUR_AFTER_CODE,您应该进行GET请求

您需要requests才能使用您的用户ID(我假设您知道如何以编程方式找到它)获取Graph API的获取请求以及一些类似于我在下面给您的网址(参见URL变量)。

import facebook
import json
import requests

ACCESS_TOKEN = ''
YOUR_FB_ID=''
URL="https://graph.facebook.com/v2.8/{}/friends?access_token={}&fields=id,name&limit=50&after=".format(YOUR_FB_ID, ACCESS_TOKEN)

def pp(o):
    all_friends = []
    if ('data' in o):
        for friend in o:
            if ('next' in friend['paging']):
                resp = request.get(friend['paging']['next'])
                all_friends.append(resp.json())
            elif ('after' in friend['paging']['cursors']):
                new_url = URL + friend['paging']['cursors']['after']
                resp = request.get(new_url)
                all_friends.append(resp.json())
             else:
                 print("Something went wrong")

    # Do whatever you want with all_friends...
    with open('facebook.txt', 'a') as f:
        json.dump(o, f, indent=4)


g = facebook.GraphAPI(ACCESS_TOKEN)
pp(g.get_connections('me', 'friends'))

希望这有帮助!