我正在努力让用户喜欢所有网页。我可以使用以下方法获取记录,但是分页无法正常工作。我每次都使用相同的数据获得相同的数据 - 之后 - 游标标记导致无限循环。限制参数也无效。
请求:
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条记录。