2012-12-21 10 views
6

Sto lavorando all'applicazione che richiede le date di nascita di tutti gli amici. Qualche codice del corpo può condividere come ottenere le date di nascita di tutti gli amici utilizzando l'API grafico. Sto utilizzando seguente codice:Android: come ottenere le date di nascita degli amici dal calendario di Facebook utilizzando l'API Graph

// start Facebook Login 
    Session.openActiveSession(this, true, new Session.StatusCallback() { 

     // callback when session changes state 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
     if (session.isOpened()) { 

      // make request to the 
      Request.executeMyFriendsRequestAsync(session, new Request.GraphUserListCallback() { 

       @Override 
       public void onCompleted(List<GraphUser> users, Response response) { 
        //Log.d("AL",""+users.size() + response.toString()); 
        for (int i=0;i<users.size();i++){ 
         Log.d("AL",""+users.get(i).toString()); 
         welcome.setText("Done"); 
        } 

       } 
      }); 
     } 
     } 
    }); 

E questo è solo il ritorno nome amici e id solo. Dove devo impostare i permessi per ottenere il compleanno degli amici? Sono nuovo in Facebook SDK. E usando SDK v3.

grafico api sta tornando seguenti JSON risultato

{Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[{"id":"1580811776","name":"Jamal Abdul Nasir"},{"id":"1610349118","name":"Ahmed Nawaz"}],"paging":{"next":"https:\/\/graph.facebook.com\/100004790803061\/friends?format=json&access_token=AAABtTr8g5U4BANiJdCiBFxQeg0l1eqYYzmSWVM8G1UlyAhTtUrAsoEZAgU19dECXTE2nw7pHIz8bDb7OJGM4wAwzusOVZAQN8yaiYVsQZDZD&limit=5000&offset=5000&__after_id=1610349118"}}}, error: null, isFromCache:false} 

che non ha compleanno.

+0

Il grafico api restituisce un risultato json. Guarda come ottenere dati da json. – SnareChops

+0

Hmm ... non ne sono sicuro. Prova a guardare attraverso [documentazione] (https://developers.facebook.com/docs/reference/api/) – SnareChops

+0

In Graph API explorer ho avuto il compleanno. https://developers.facebook.com/tools/explorer 514418319? Fields = friends.fields (nome, compleanno, id) Qualunque corpo mi può dire Come fare il codice sopra la richiesta di api del grafico ?? –

risposta

13

Prima di definire il callback, dove si otterrà amici e informazioni di compleanno, se autenticato:

Session.StatusCallback statusCallback = new Session.StatusCallback() { 

    // callback when session changes state 
    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
    if (session.isOpened()) { 
     // Private method, to be defined 
     makeFriendsRequest(); 
    } 
    } 

}; 

Quindi, è possibile aprire la sessione e passare nella richiesta necessaria "friends_birthday" autorizzazioni:

Session session = new Session(this); 
session.openForRead(new Session.OpenRequest(this) 
         .setCallback(statusCallback) 
         .setPermissions(Arrays.asList("friends_birthday"))); 

Infine, ecco il metodo post-autenticazione è possibile utilizzare per ottenere informazioni amici, tra cui il compleanno:

private void makeFriendsRequest() { 
    Request myFriendsRequest = Request.newMyFriendsRequest(Session.getActiveSession(), 
      new Request.GraphUserListCallback() { 

     @Override 
     public void onCompleted(List<GraphUser> users, Response response) { 
      if (response.getError() == null) { 
       // Handle response 
      } 

     } 

    }); 
    // Add birthday to the list of info to get. 
    Bundle requestParams = myFriendsRequest.getParameters(); 
    requestParams.putString("fields", "name,birthday"); 
    myFriendsRequest.setParameters(requestParams); 
    myFriendsRequest.executeAsync(); 
} 

Controlla anche l'app SessionLoginSample, in bundle con l'SDK se stai cercando modi diversi per implementare l'accesso a Facebook.

+0

Non dimenticare che se vuoi mantenere lo stato della sessione correttamente, non dimenticare due cose: ** 1. ** Aggiungi 'Session.setActiveSession (session);' dopo 'Session session = new Session (FindFriendsActivity.this) ; 'line e ** 2. ** Sovrascrivi l'attività' onActivityResult() 'con qualcosa di simile: ' @Override public void onActivityResult (int requestCode, int resultCode, Intent data) { super.onActivityResult (requestCode, resultCode, dati); Sessione sessione = Sessione.getActiveSession(); if (session! = Null) { session.onActivityResult (this, requestCode, resultCode, data); } } ' –

0

Suppongo Provare ad usare questa:

URL url = "http://YOUR_QUERY_URL_WITH_PARAMS"; 
InputStream is = null; 
URLConnection connection = url.openConnection(); 
String line; 
StringBuilder builder = new StringBuilder(); 
BufferedReader reader = new BufferedReader(new InputStreamReader(      connection.getInputStream())); 
while ((line = reader.readLine()) != null) 
{ 
    builder.append(line); 
} 
String jSONString = builder.toString(); 
JSONObject jSONObject = new JSONObject(jSONString); 

Poi prendere i dati ricevuti e visualizzarlo.

Nota: non ho ancora testato questo codice, non hanno dispositivo Android per testare più avanti, ma dovrebbe farti puntato nella giusta direzione.

+0

@ahmedNawaz hai voluto inserire il codice nel tuo commento? Se è così e se c'è più di una o due righe puoi aggiungerlo alla tua domanda modificando e scrivendo un commento qui dicendomi di guardarlo. – SnareChops

Problemi correlati