2017-09-16 1 views
0

Ich versuche, user_id, Name & E-Mail von Facebook über Grafik API zu bekommen. aber es schickt mir nicht die E-Mail. Ich verwende eine Funktion wie folgt aus:Facebook Grafik api nicht senden alle Daten in Android

void callGraphApi() { 
     accessToken = AccessToken.getCurrentAccessToken(); 

     GraphRequest request = GraphRequest.newMeRequest(
       accessToken, 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(
          JSONObject object, 
          GraphResponse response) { 

         tv_response.setText(response.toString()); 
        } 
       }); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "id,name,email"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 

Ich bin nur eine Antwort wie diese bekommen:

{"id":"1480750682018443","name":"Ogwemuvwem Ossas","gender":"male"}, error: null} 

Jede Lösung ??

+0

Sind Sie sicher, dass Sie E-Mail-Adresse in erweiterten Berechtigungen haben? –

+0

sehe meine aktualisierte Antwort –

Antwort

0

In Ihrem Facebook-Entwickler-Dashboard Gehen Sie zu App-Rezension in Dort können Sie Ihre Datenanfrage Erlaubnis sehen.

enter image description here

Wenn E-Mail-Erlaubnis dort nicht aufgeführt haben Sie es durch Klick hinzufügen eine Vorlage Taste auf der gleichen Seite beginnen.

enter image description here

von Facebook Docs:

Hinweis, auch wenn Sie die E-Mail-Erlaubnis beantragen, nicht garantiert ist, erhalten Sie eine E-Mail-Adresse. Wenn sich beispielsweise jemand mit einer Telefonnummer anstelle einer E-Mail-Adresse für Facebook angemeldet hat, ist das Feld möglicherweise leer.

+0

Vielen Dank :) Fixed :) –

+0

Klingt gut ... Happy Coding :) –

0

Sie können diese neue API versuchen. Sie können Berechtigungen in ArrayList wie folgt übergeben.

loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 
     getUserDetails(loginResult); 
    } 

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

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

Sie können LoginResult wie folgt behandeln.

// Get Facebook login results 
    protected void getUserDetails(LoginResult loginResult) { 
     GraphRequest data_request = GraphRequest.newMeRequest(
       loginResult.getAccessToken(), 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject json_object, GraphResponse response) { 

         Log.i("onfbCompleted: ", json_object.toString());      

        } 

       }); 
     Bundle permission_param = new Bundle(); 
     permission_param.putString("fields", "id,name,email,picture.width(120).height(120)"); 
     data_request.setParameters(permission_param); 
     data_request.executeAsync(); 

    } 

Ich hoffe, es ist Hilfe für Sie. :)

+0

Sie müssen CallbackManager CallbackManager aufrufen = CallbackManager.Factory.create(); fb SDK in Oncreate –

Verwandte Themen