2012-12-21 37 views
6

我正在處理需要所有朋友的出生日期的應用程序。一些機構可以共享代碼如何使用圖形API獲取所有朋友的出生日期。 我使用下面的代碼:Android:如何使用圖表API從Facebook日曆獲取朋友出生日期

// 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"); 
        } 

       } 
      }); 
     } 
     } 
    }); 

而這僅是隻返回的朋友的名字和編號。在哪裏我必須設置權限以獲得朋友的生日?我是facebook的新手。並使用SDK v3。

圖形API將返回以下JSON結果

{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} 

不具備的生日。

+0

圖形api返回一個json結果。查看如何從json獲取數據。 – SnareChops

+0

嗯......我不確定。嘗試查看[文檔](https://developers.facebook.com/docs/reference/api/) – SnareChops

+0

在Graph API Explorer中,我得到了生日。 https://developers.facebook.com/tools/explorer 514418319?fields = friends.fields(name,birthday,id) 任何機構都可以告訴我如何在圖形上面執行代碼api request? –

回答

13

首先定義你的回調,在那裏你會得到朋友和生日信息,如果認證:

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

}; 

然後,您可以打開會話,並傳遞必要的,「friends_birthday」權限要求:

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

最後,這裏是你可以用它來得到朋友的信息,包括生日認證後方法:

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

如果您正在尋找可以實現Facebook登錄的不同方式,還可以檢查與SDK捆綁在一起的SessionLoginSample應用程序。

+0

不要忘記,如果你想保持你的會話狀態正確,不要忘了兩件事:** 1。** Session Session = new Session(FindFriendsActivity.this)後添加'Session.setActiveSession(session);' ;'line和** 2。**使用類似下面的內容覆蓋活動的'onActivityResult()': '@Override public void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode,resultCode,數據); 會話會話=會話。getActiveSession()函數; (session!= null)session.onActivityResult(this,requestCode,resultCode,data); } }' –

0

我想嘗試使用這樣的:

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

然後取接收到的數據並顯示它。

注:我沒有測試此代碼,不必對Android設備進行了測試,但應該讓你在正確的方向。

+0

@ahmedNawaz您的意思是在您的評論中發佈代碼?如果是這樣,並且如果還有更多,那麼只需一行或兩行,您可以在此處編輯並撰寫評論,告訴我看看它,將其添加到您的問題中。 – SnareChops

相關問題