0

Anfangs funktionierte mein Code perfekt. Dann gestern habe ich festgestellt, dass Login über den Facebook-Button, setReadPermissions fragt nur öffentliches Profil, Ignorieren von E-Mail, Freundesliste .... Ich habe ein anderes Projekt, sollte dieser Code perfekt funktioniert. Weißt du, warum?Android Facebook Login setReadPermissions funktioniert nicht

Dieser Teil meines Codes ist:

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

    } 

In anderem Projekt, dieser Code arbeitet perfekt. Ich dachte, es ist ein Facebook-App-Problem, Berechtigungsproblem, aber auch mit meinem Admin-Account bekomme ich nur öffentliches Profil. Helfen Sie mir bitte.

+0

haben Sie versucht, neu zu erstellen/bereinigter Build auch unistall zuerst von Emulator oder Gerät –

+0

Ja, nicht funktioniert, habe ich versucht, alle Test .. – mems

+0

'setPublishPermissions' ist nicht einmal in der Code, den Sie gezeigt haben. – CBroe

Antwort

0

Ok Ich weiß, dass dies alt ist, aber Sie verwenden ein Array als Liste, indem Sie es nur ein Argument übergeben.

Weiß nicht, warum Facebook auch das erste Element verstehen. Instaed Sie diese verwenden sollten:

 facebookLoginButton.setReadPermissions(Arrays.asList("email", /*etc as a string permissions*/,"user_birthday")); 
Verwandte Themen