2016-10-14 1 views
0

J'utilise le SDK Android de Facebook pour récupérer des informations sur l'utilisateur.Facebook SDK Android response.getRequestForPagedResults (GraphResponse.PagingDirection.NEXT) renvoie null

Ma demande initiale est la suivante:

GraphRequest request = GraphRequest.newMeRequest(
       AccessToken.getCurrentAccessToken(), this); 

Bundle parameters = new Bundle(); 
parameters.putString("fields", "id,name,events"); 
request.setParameters(parameters); 
request.executeAndWait(); 

et cela fonctionne très bien. Le rappel se présente comme suit:

@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(); 
    } 
} 

Je suis en mesure d'analyser le JSONObject, et quand je consulter la réponse brute, il semble même que ce que Facebook's Graph API Explorer me donne.

Une partie du JSON (dans la GraphResponse premières, ainsi que dans le graphique Explorer) décrit la Pagination:

"paging": { 
    "cursors": { 
    "before": "TVRRek1qTTJOREF3TXpZAMU1qQTFNRG94TmprNE5URTJNREF3T2pFNU9UZAzFPREF4TXpNNU9EUXdPQT09", 
    "after": "TVRVM05qYzVNVEkxTlRrMU1ERTJNam94TkRjME1EVTVOakF3T2pFNU9UZAzFPREF4TXpNNU9EUXdPQT09" 
    }, 
    "next": "https://graph.facebook.com/v2.8/customerID/events?access_token=accesstoken" 
} 

Cependant, lorsque je tente de chercher la prochaine GraphRequest dans le cadre du GraphResponse, je toujours revenir null.

Qu'est-ce que je fais mal?

Répondre

0

Je ne sais pas si cela est lié au fait que je travaillais avec un newMeRequest au lieu d'un GraphRequest, « régulier », mais je suis arrivé ce travail après avoir changé ma mise en œuvre à ce qui suit:

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(); 
    } 

}

En ce moment je suis capable de traverser les pages suivantes, en utilisant getRequestForPagedResults.