2012-09-03 2 views
2

나는 내 친구 목록에있는 모든 생일 날짜를 얻고 싶습니다. 나는 며칠 동안 노력했다. 내 코드는 아래와 같습니다.안드로이드는 페이스 북의 프로필에서 생일 날짜를 얻습니다.

Facebook facebook = new Facebook(<MY_FACEBOOK_ID>); 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    mContext = this; 
    setContentView(R.layout.main); 

    showNotification(); 

    final String[] PERMISSIONS = new String[] {"user_location", "user_birthday"};   


    facebook.authorize(this, PERMISSIONS, new DialogListener() { 
     @Override 
     public void onComplete(Bundle values) {} 


     @Override 
     public void onCancel() {} 

     @Override 
     public void onFacebookError(FacebookError e) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onError(DialogError e) { 
      // TODO Auto-generated method stub 

     } 
    }); 

    try { 

      String token = facebook.getAccessToken(); 

      Bundle bundle = new Bundle(); 
      bundle.putString("fields", "id,name"); 
      bundle.putString("access_token", token); 

       String response = facebook.request("me/friends", bundle); 

       facebook.setAccessToken(facebook.getAccessToken()); 

       Toast.makeText(mContext, token , Toast.LENGTH_LONG).show(); 
       Toast.makeText(mContext, response, Toast.LENGTH_LONG).show(); 

       JSONObject json = Util.parseJson(response); 

       JSONArray data = json.getJSONArray("data"); 

       for (int i = 0; i < data.length(); i++) 
       { 
        JSONObject friend = data.getJSONObject(i); 

        String id = friend.getString("id"); 
        String name = friend.getString("name"); 
        Toast.makeText(mContext, "ID: "+ id , Toast.LENGTH_LONG).show(); 
        Toast.makeText(mContext, "NAME: "+ name , Toast.LENGTH_LONG).show(); 
       } 

이 코드를 사용할 때마다 오류가 발생합니다. 그리고 토큰은 빈 보여 모두 응답은 질문을 표시

+0

의 가능한 속는 - http://facebook.stackoverflow.com/questions/4645595/how-to-get-all-friends-name-id-birthday-location-etc-facebook-api-in 및 http://stackoverflow.com/questions/3393610/how-to-get-friends -birthday-list-using-facebook-api – deesarus

답변

5

방법 만들기 "활성 액세스 토큰이 현재 사용자에 대한 정보를 조회하는 데 사용되어야한다"

getProfileInformation() 

메소드 본문에서 당신이 쓸 필요를 :

public void getProfileInformation() { 
mAsyncRunner.request("me", new RequestListener() { 
    @Override 
    public void onComplete(String response, Object state) { 
     Log.d("Profile", response); 
     String json = response; 
     try { 
      JSONObject profile = new JSONObject(json); 
      // getting name of the user 
      String name = profile.getString("name"); 
      // getting email of the user 
      String email = profile.getString("email"); 
      //getting user birthday 
      String birth_day=profile.getString("birthday"); 

      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), "Name: " + name + "\nEmail: " + email, Toast.LENGTH_LONG).show(); 
       } 

      }); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public void onIOException(IOException e, Object state) { 
    } 

    @Override 
    public void onFileNotFoundException(FileNotFoundException e, 
      Object state) { 
    } 

    @Override 
    public void onMalformedURLException(MalformedURLException e, 
      Object state) { 
    } 

    @Override 
    public void onFacebookError(FacebookError e, Object state) { 
    } 
}); 

}

위의 기능은 페이스 북에서 JSON 데이터를 얻을 것이다. 개별 프로필 데이터를 얻으려면 json을 구문 분석해야합니다.

페이스 북에서 샘플 프로파일 JSON은 다음과 같이 될 것입니다 :

 { 
    "id": "1464730016", 
    "name": "XYZ", 
    "first_name": "XYZ", 
    "last_name": "ABC", 
    "link": "https://....", 
    "username": "XYZ", 
    "birthday": "22/10/89", 
    "hometown": 
} 

자세한 내용은 당신이 참조 할 수 있습니다 :

http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/ 
관련 문제