0

처음에는 코드가 완벽하게 작동했습니다. 그런 다음 어제 나는 페이스 북 버튼을 통한 로그인 인 setReadPermissions가 이메일, 친구 목록을 무시하고 공용 프로필 만 묻는다는 것을 깨달았습니다 ....이 코드가 완벽하게 작동해야하는 또 다른 프로젝트가 있습니다. 왜 나 한테 말해?안드로이드 페이스 북의 로그인 setReadPermissions가 작동하지 않습니다

이 내 코드의 일부입니다 : 다른 프로젝트에서

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(this.getApplicationContext()); 
    ... 
    callbackManager = CallbackManager.Factory.create(); 
    facebook(); 
    ... 
} 

private void facebook(){ 
     facebookLoginButton = (LoginButton) findViewById(R.id.fb_login_button); 
     facebookLoginButton.setReadPermissions(Arrays.asList("public_profile,email,user_friends,user_birthday")); 
     getLoginDetails(facebookLoginButton); 
    } 

protected void getLoginDetails(final LoginButton login_button) { 

     // Callback registration 
     login_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult login_result) { 
       final Profile profile = Profile.getCurrentProfile(); 
       GraphRequest request = GraphRequest.newMeRequest(
         login_result.getAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(JSONObject object, GraphResponse response) { 
           try { 

            System.out.println("Questo è l'object"+object); 
            System.out.println("Questo è il response"+response); 

            System.out.println("Questo è il Nome"+object.getString("name")); 
            System.out.println("Questo è il id"+object.getString("id")); 
            System.out.println("Questo è il email"+object.getString("email")); 

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

          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,name, birthday,picture,email"); 
       request.setParameters(parameters); 
       request.executeAsync(); 
      } 

      @Override 
      public void onCancel() { 
       // code for cancellation 
      } 

      @Override 
      public void onError(FacebookException exception) { 
       // code to handle error 
      } 
     }); 

     accessTokenTracker = new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken,AccessToken currentAccessToken) { 
       // Set the access token using 
       // currentAccessToken when it's loaded or set. 
       //System.out.println("Questo è accesso token "+currentAccessToken); 
       System.out.println("Questo è accesso OLDtoken "+oldAccessToken); 
      } 
     }; 

     // If the access token is available already assign it. 
     accessToken = AccessToken.getCurrentAccessToken(); 
     System.out.println("Questo è accesso token "+accessToken); 

    } 

완벽하게 코드가 작동. 나는 페이스 북의 애플 리케이션 문제, 퍼미션 문제라고 생각했다. 그러나 나의 admin 계정으로도 공개 프로필 만 얻는다. 나를 도와주세요.

+0

당신이/정리 빌드를 다시 시도해야 또한 에뮬레이터 또는 장치에서 처음 UNISTALL –

+0

예,하지 난 모든 테스트를했는데, 작동 ... – mems

+0

는'setPublishPermissions'는에도없는 당신이 보여준 코드. – CBroe

답변

0

그래, 나는 이것이 오래되었음을 알고 있지만, 하나의 인수 만 전달하여 배열을 목록으로 사용하고 있습니다.

왜 페이스 북이 첫 번째 요소를 이해하는지 모릅니다. 당신이 사용해야 Instaed :

 facebookLoginButton.setReadPermissions(Arrays.asList("email", /*etc as a string permissions*/,"user_birthday")); 
관련 문제