0

페이스 북 SDK를 사용하는 새로운 안드로이드 앱을 개발 중입니다. 나는 사용자의 친구 목록을 가져 싶은, 나는 그런 식으로 일을 해요 :페이스 북의 응답 코드 200

Request request = Request.newMyFriendsRequest(
         Session.getActiveSession(), 
         new Request.GraphUserListCallback() { 
          public void onCompleted(List<GraphUser> paramAnonymousList, 
            Response paramAnonymousResponse) { 
           Toast.makeText(getApplicationContext(), 
             paramAnonymousList.toString(), 
             Toast.LENGTH_SHORT).show(); 
           Log.e(TAG, paramAnonymousList.toString() 
             + paramAnonymousResponse.toString()); 
          } 
         }); 
       request.executeAsync(); 

내가 응용 프로그램을 실행할 때 내가 갖는 것을 그렇게 :

GraphObjectList{itemType=GraphUser, state=[]}{Response: responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[]}}, error: null, isFromCache:false} 

내가 안으로이 코드를 실행하려고 앱은 개발 모드가 아니며 잘 작동합니다. 사용자의 데이터를 가져올 수 있습니다. 무엇이 응답 코드 200의 원인이 될 수 있습니다. 그에 따르면 : https://developers.facebook.com/docs/graph-api/using-graph-api/v2.0 응답 코드 200은 Facebook 권한 오류에 속합니다. 그러나 사용자의 친구 목록을 가져 오려면 특정 사용 권한을 제공 할 필요가 없으므로이 응답의 원인이 될 수 있습니까?

미리 감사드립니다.

답변

2

HTTP 200은 귀하의 요청이 OK임을 나타냅니다.

실제 문제는 Facebook API v2.0입니다. 앱은 사용자의 친구 목록 전체를 검색 할 수 없으며 친구 인 은 이미 애플리케이션을 사용하고 있습니다. 응용 프로그램이 여전히 v1.0에 있더라도 5 월 1 일 이후 처음 로그인 한 사용자는 v2.0 동작을 얻고 있습니다.

참조 : https://developers.facebook.com/docs/graph-api/reference/v2.0/user/friends

건배!

+0

감사합니다 잘 작동하지만, 단지 100 % 확인하기 위해 한 - 전체 연락처 목록을 검색 할 수있는 솔루션이 아닌가요? 지정된 권한을 요청 했는데도? 전체 연락처 목록을 얻을 수있는 안드로이드 앱을 보았습니다. – user1275995

+0

5 월 1 일 전에 해당 애플리케이션에 권한을 부여한 경우, 해당 애플리케이션은 (그리고 여전히 2015 년 5 월까지) 전체 친구 목록을 검색 할 수있었습니다 . 그러나 그 날짜 이후에 애플리케이션에 권한을 부여하는 사람들은 이미 앱을 사용하고있는 친구 목록에 새로운 v2.0 제한을 적용합니다. 이 권한은 제한된 목록 ('user_friends')에 대한 액세스를 허용하는 것이며 기본 권한에서는 아직 암시 적으로 묻지 않습니다. – edgebal

+0

은 페이스 북을 요약합니다.) – user1275995

0

나는이 방법으로 수행하고 페이스 북 SDK에서 완벽하게 답변 4.18.0

public class SignIn extends AppCompatActivity { 

    CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //before set conteview 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     // AppEventsLogger.activateApp(this); 
     callbackManager = CallbackManager.Factory.create(); 
     setContentView(R.layout.activity_signin); 

     LoginButton loginButton = (LoginButton) findViewById(R.id.login_button); 

     loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 

     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       GraphRequest graphRequest=GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) { 

         Log.d("Graph Response",graphResponse.toString()); 

         String myCustomizedResponse = graphResponse.getJSONObject().toString(); 

         Log.d("Ketan_Ramani",graphResponse.getJSONObject().toString()); 

         try { 
          JSONObject obj = new JSONObject(myCustomizedResponse); 

          String id = obj.getString("id"); 
          String first_name = obj.getString("first_name"); 
          String last_name = obj.getString("last_name"); 
          String email = obj.getString("email"); 

          Log.d("Id",id); 
          Log.d("FirstName",first_name); 
          Log.d("LastName",last_name); 
          Log.d("Email",email); 

         } catch (JSONException e) { 
          Utils.hide_dialog(); 

          e.printStackTrace(); 
         } 
        } 
       }); 

       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,name,first_name,last_name,email"); 
       graphRequest.setParameters(parameters); 
       graphRequest.executeAsync(); 
      } 

      @Override 
      public void onCancel() { 
       // App code 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       // App code 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
}