2017-05-16 1 views
0

Ich weiß, dass diese Frage gestellt wurde, aber es gibt nur eine Antwort ziemlich oder wird nicht einmal beantwortet.Facebook API gibt keine E-Mail zurück

Ich weiß nicht, ob es mein Mangel an Verständnis oder Mangel an Facebook-Dokumentation ist, aber bis jetzt habe ich diesen Code, um Benutzer-E-Mail abrufen.

Die JSON-Zeichenfolge gibt nur den Namen und die ID zurück, daher ist meine E-Mail-Variable leer.

Der Teil, mit dem ich Probleme habe, ist, dass, wenn ich es auf Graph Explorer oder mit dem link testen, ich die E-Mail bekomme.

ich se Berechtigungen auch auf der Entwickler-Website Armaturenbrett und auch in meinem Code habe (das ist innerhalb onClick(), wenn der Benutzer drücken Sie die Facebook Login-Taste): mFbLoginManager.logInWithReadPermissions(LoginActivity.this, Arrays.asList("user_photos", "email", "public_profile")

ich sicher So bin nicht, was das Problem in meinem Code. Der Login Button ist benutzerdefiniert und nicht der Facebook LoginButton, ich weiß nicht, ob das wichtig ist.

Jede Hilfe willkommen

+0

check this out http://stackoverflow.com/a/32776987/2556660 – RameshJaga

+0

Mögliche Duplikat [Facebook JS SDK FB.api ('/ me') Methode ist doesn‘ t gebe die Felder zurück, die ich in Graph API v2.4 +] erwarte (http://stackoverflow.com/questions/32584850/facebook-js-sdks-fb-api-me-method-doesn-return-the-fields-i) -expect-in-gra) - Sie haben es versäumt, _ask_ für die gewünschten Felder zu verwenden, was seit API v2.4 – CBroe

Antwort

2
compile 'com.facebook.android:facebook-android-sdk:4.11.0' 



FacebookSdk.sdkInitialize(this); 
     callbackManager = CallbackManager.Factory.create(); 

oncreate 
-----------------------\ 

LoginManager.getInstance().logInWithReadPermissions(UserActivity.this, Arrays.asList("public_profile", "user_friends", "email")); 
       facebookTime(); 

onclicklisterner 

---------------/ 

callbackManager.onActivityResult(requestCode, resultCode, data); 

onactivityresult 

-------------/ 

public void facebookTime() { 

     LoginManager.getInstance().registerCallback(callbackManager, 
       new FacebookCallback<LoginResult>() { 
        @Override 
        public void onSuccess(LoginResult loginResult) { 
         System.out.println("Success"); 
         GraphRequest request = GraphRequest.newMeRequest(
           loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 

            @Override 
            public void onCompleted(JSONObject object, GraphResponse response) { 

             // Util.showCenteredToast(getActivity(), "object" + object); 
             //  Util.showCenteredToast(getActivity(), "GraphResponse" + response); 

             try { 
              strEmail = object.getString("email"); 
              strUserName = object.getString("name"); 
              String id = object.getString("id"); 

              // write your code here 


              //asyncTask.iSocialMediaResponse = LoginFragment.this; 
              asyncTask.execute(); 


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


            } 
           }); 
         Bundle parameters = new Bundle(); 
         parameters.putString("fields", "email,name"); 
         //parameters.putString("fields", "user_friends"); 
         request.setParameters(parameters); 
         //Log.e(" About to Graph Call", " "); 
         request.executeAsync(); 

        } 


        @Override 
        public void onCancel() { 
         // App code 
         Util.showCenteredToast(UserActivity.this, "oncancel"); 
        } 

        @Override 
        public void onError(FacebookException exception) { 
         // App code 
         Util.showCenteredToast(UserActivity.this, "exception" + exception); 


        } 
       }); 
    } 




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

      callbackManager.onActivityResult(requestCode, resultCode, data); 

     } 
} 
+0

der Teil ist, der mich auf diesem Snippet stört, wie man die E-Mail tatsächlich speichert. Außerdem muss ich die Daten erhalten, nachdem die asynchrone Aufgabe abgeschlossen ist –

Verwandte Themen