-1

Ich mag den E-Mail des Benutzers bekommen von Facebook Android SDK 4.3.0kann nicht E-Mail von Facebook Android SDK 4.x erhalten, auch wenn der Benutzer die Erlaubnis erteilt hat

Es gibt viele Fragen zu diesem Thema, aber die markierten Antworten erzählen dass der Benutzer die Berechtigung manchmal nicht erteilt.

Ich verwende meine Facebook acc zum Testen und ich habe die Erlaubnis erteilt. Trotzdem kann ich es nicht verstehen.

Der Code:

public static final List<String> FACEBOOK_PERMISSIONS = Arrays.asList("public_profile", "email", "user_birthday"); 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    callbackManager = CallbackManager.Factory.create(); 
    buttonLogin = (LoginButton) view.findViewById(R.id.button_fb_login); 
    buttonLogin.setReadPermissions(AppConstants.FACEBOOK_PERMISSIONS); 
    buttonLogin.setFragment(this); 

    buttonLogin.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
     GraphRequestAsyncTask request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject user, GraphResponse response) { 
       if (user != null) { 
        Log.d("FacebookSDK", user.optString("email")); 
       } 
      } 
     }).executeAsync(); 
    } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException error) { 

     } 
    }); 
} 

Ich bezweifle über Graph API-Version des SDK 4.3.0, aber Ihre Ratschläge annehmen kann mir den Himmel.

+0

Seit API v2.4, müssen Sie explizit für die Felder, die Sie bekommen zurückgegeben werden soll fragen. Ich sehe nicht, dass du das irgendwo in deiner Anfrage tust, die die Benutzerdetails erhält. – CBroe

+0

Es wäre besser, wenn Sie uns zeigen, wie wir explizit nach den Feldern im Code fragen ... @CBroe –

Antwort

-1

Wie immer habe ich mein eigenes Problem gelöst.

sollte ich expilcitly die Parameter gesetzt haben, dass ich wie unten wollen:

GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
    @Override 
    public void onCompleted(JSONObject user, GraphResponse response) { 
     if (user != null) { 
      Log.d("FacebookSDK", user.optString("email")); 
     } 
    } 
}); 
Bundle parameters = new Bundle(); 
parameters.putString("fields", "id,name,email"); 
request.setParameters(parameters); 
request.executeAsync(); 
Verwandte Themen