我正在尝试获取用户喜欢的所有页面网址。我可以使用下面的方法获取记录,但分页不起作用。我每次都得到相同的数据,并且游标标记前后相同,导致无限循环。限制参数也不起作用。
Request:
final String[] afterString = {""}; // will contain the next page cursor
final Boolean[] noData = {false}; // stop when there is no after cursor
do {
GraphRequest request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
JSONObject jsonObject = response.getJSONObject();
Log.e("cursor data", jsonObject.toString());
try {
JSONObject childObject = jsonObject.getJSONObject("likes");
JSONArray jsonArray = childObject.getJSONArray("data");
Log.e("cursor data", jsonArray.toString());
// your code
if (!childObject.isNull("paging")) {
JSONObject paging = childObject.getJSONObject("paging");
JSONObject cursors = paging.getJSONObject("cursors");
if (!cursors.isNull("after"))
afterString[0] = cursors.getString("after");
else
noData[0] = true;
} else
noData[0] = true;
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "likes{link}");
parameters.putString("after", afterString[0]);
parameters.putString("limit", "20");
request.setParameters(parameters);
request.executeAndWait();
}
while (!noData[0] == true);
回复:
{
"likes": {
"data": [
{
"link": "https:\/\/www.facebook.com\/hackingworld27\/",
"id": "206659129366770"
},
{
"link": "https:\/\/www.facebook.com\/getBksy\/",
"id": "259965487527431"
},
{
"link": "https:\/\/www.facebook.com\/festivallapp\/",
"id": "1688234858119600"
},
{
"link": "https:\/\/www.facebook.com\/FestivalBooks-967208323354910\/",
"id": "967208323354910"
},
{
"link": "https:\/\/www.facebook.com\/subhamfashion\/",
"id": "1454168668186632"
},
],
"paging": {
"cursors": {
"before": "MjA2NjU5MTI5MzY2Nzcw",
"after": "MTEyMTgwMjU1NDg2MTI0"
}
}
},
"id": "858224610968939"
}
以上响应是示例响应。我尝试按喜欢了很多页面的用户 ID 发送请求,但每次最多都获得相同的 25 条记录。