2012-12-21 1 views
6

나는 모든 친구의 생일이 필요한 응용 프로그램을 만들고 있습니다. 몇 명의 시체가 그래프 API를 사용하여 모든 친구의 생일을 얻는 방법을 코드로 공유 할 수 있습니까?Android : 그래프 API를 사용하여 페이스 북 캘린더에서 친구 생년월일을 얻는 방법

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

       } 
      }); 
     } 
     } 
    }); 

을 그리고 이것은 단지 친구의 이름과 ID 만 반환 : 나는 다음 코드를 사용하고 있습니다. 친구 생일을 가질 권한을 설정해야하는 곳은 어디입니까? 나는 facebook SDK에 새로운 사람입니다. 그리고 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

음 ... 잘 모르겠습니다. [documentation] (https://developers.facebook.com/docs/reference/api/) – SnareChops

+0

그래프 API 탐색기에서 생일을 맞았습니다. https://developers.facebook.com/tools/explorer 514418319 fields = friends.fields (이름, 생일, 아이디) 어떤 몸이라도 말해 줄 수 있습니까? 그래프 api 요청 위의 코드를 수행하는 방법 ?? –

답변

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"권한 요청에 전달할 수 있습니다

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(); 
} 
012 :
Session session = new Session(this); 
session.openForRead(new Session.OpenRequest(this) 
         .setCallback(statusCallback) 
         .setPermissions(Arrays.asList("friends_birthday"))); 

마지막으로, 여기 당신이 생일을 포함하여, 친구의 정보를 얻을하는 데 사용할 수있는 사후 인증 방법입니다

Facebook 로그인을 구현할 수있는 여러 가지 방법을 찾고 계시다면 SDK와 함께 제공되는 SessionLoginSample 앱을 확인하십시오.

+0

세션 상태를 올바르게 유지하려면 잊지 마라. ** Session Session = new Session (FindFriendsActivity.this) 다음에 ** Session.setActiveSession (session);을 추가한다. ; line 및 ** 2 ** ** 활동의'onActivityResult()'를 다음과 같이 덮어 씁니다. '@Override public void onActivityResult (int requestCode, int resultCode, 의도 데이터) { super.onActivityResult (requestCode, resultCode, 데이터); 세션 세션 = 세션.getActiveSession(); if (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); 

그런 다음 수신 된 데이터를 가지고 그것을 표시합니다.

참고 : 난 더 이상에 테스트 안드로이드 장치가없는,하지만 당신은 올바른 방향으로 지적 가야,이 코드를 테스트하지 않았습니다. 당신이 친구들과 생일 정보를 얻을 볼 수있는 곳 인증 된 경우

+0

@ahmedNawaz 의견에 코드를 게시 하시겠습니까? 그렇다면 더 많은 라인이 있거나 한 줄 또는 두 개가 있다면 질문을 편집하여 추가하고 여기에 의견을 적어서 살펴보십시오. – SnareChops

관련 문제