#android #facebook-graph-api #pagination #facebook-sdk-4.0
#Android #facebook-graph-api #разбивка на страницы #facebook-sdk-4.0
Вопрос:
Я использую Android SDK от Facebook для получения информации о пользователе.
Мой первоначальный запрос следующий:
GraphRequest request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken(), this);
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,events");
request.setParameters(parameters);
request.executeAndWait();
и это работает нормально. Обратный вызов выглядит следующим образом:
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
User user = parseAndValidateFacebookResponse(object);
if (user.getEvents().getData().size() != 0) {
// do stuff here
}
GraphRequest nextRequest = response.getRequestForPagedResults(GraphResponse.PagingDirection.NEXT);
if (nextRequest != null) {
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,events");
nextRequest.setParameters(parameters);
nextRequest.setCallback(this);
nextRequest.executeAsync();
}
}
Я могу проанализировать JSONObject, и когда я проверяю необработанный ответ, он выглядит так же, как то, что мне дает обозреватель Graph API Facebook.
Часть JSON (как в необработанном GraphResponse, так и в Graph Explorer) описывает разбивку на страницы:
"paging": {
"cursors": {
"before": "TVRRek1qTTJOREF3TXpZAMU1qQTFNRG94TmprNE5URTJNREF3T2pFNU9UZAzFPREF4TXpNNU9EUXdPQT09",
"after": "TVRVM05qYzVNVEkxTlRrMU1ERTJNam94TkRjME1EVTVOakF3T2pFNU9UZAzFPREF4TXpNNU9EUXdPQT09"
},
"next": "https://graph.facebook.com/v2.8/customerID/events?access_token=accesstoken"
}
Однако, когда я пытаюсь получить следующий GraphRequest как часть GraphResponse, я всегда возвращаюсь null
.
Что я делаю не так?
Ответ №1:
Я не уверен, связано ли это с тем фактом, что я использовал newMeRequest
вместо «обычного» GraphRequest, но я получил эту работу после изменения моей реализации на следующую:
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,events");
parameters.putString("limit", "25");
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/" Profile.getCurrentProfile().getId() "/events",
parameters,
HttpMethod.GET,
this)
.executeAsync();
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
User user = parseAndValidateFacebookResponse(object);
if (user.getEvents().getData().size() != 0) {
// do stuff here
}
GraphRequest nextRequest = response.getRequestForPagedResults(GraphResponse.PagingDirection.NEXT);
if (nextRequest != null) {
Bundle parameters = new Bundle();
nextRequest.setParameters(parameters);
nextRequest.setCallback(this);
nextRequest.executeAsync();
}
}
Прямо сейчас я могу переходить к следующим страницам, используя getRequestForPagedResults
.