Comment obtenir l'adresse e-mail de l'utilisateur enregistré avec la demande de graphique dans Facebook Android sdk 4.0

J'essaie d'obtenir l'adresse e-mail de l'utilisateur une fois qu'il a ouvert une session sur mon application Android avec Facebook (sdk 4.0). J'ai lu de nombreux messages demandant la même chose mais je ne pouvais toujours pas fonctionner. Je connecte simplement l'utilisateur avec le code

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

Ensuite, je demande la requête Graph API

 LoginManager.getInstance().registerCallback(fbCallbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { System.out.println(loginResult.getAccessToken().toString()); GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject object, GraphResponse response) { System.out.println(object.toString()); } }); Bundle parameters = new Bundle(); parameters.putString("fields", "email"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } }); 

La sortie est juste

 {AccessToken token:ACCESS_TOKEN_REMOVED permissions:[public_profile, contact_email, user_friends, email, basic_info]} {"id":"xxxxxxxxxxxxxxx"} 

Même si je supprime la partie "champs", je reçois un JSON avec un tas d'informations publiques de l'utilisateur, mais jamais le champ de messagerie. Je teste cela sur mon propre compte Facebook, et j'ai une adresse e-mail qui lui est associée.

  • Facebook Android SDK 4.5.0 obtenir une adresse email
  • Android Comment aimer une publication avec facebook 3.0 sdk
  • Comment ajouter un retour de session pour facebook sdk dans Android
  • Publier sur Facebook Fan page par l'application
  • Impossible d'obtenir l'emplacement et le courrier électronique à l'aide de l'API Facebook
  • Comment puis-je simplement partager du contenu sur le mur de Facebook en utilisant son SDK Android?
  • Android: Comment récupérer ou obtenir une image spécifique à partir de n'importe quel URl ou LINK comme Facebook?
  • Android FaceBook newMyFriendsRequest Returns EMPTY Liste d'amis
  • 3 Solutions collect form web for “Comment obtenir l'adresse e-mail de l'utilisateur enregistré avec la demande de graphique dans Facebook Android sdk 4.0”

    Vous pouvez obtenir le courrier électronique de l'utilisateur enregistré comme suit, mais notez que,

    1. Ils ne garantissent pas que vous obtiendrez une adresse électronique ici .

    2. Dans certains cas, bien que l'utilisateur ait fourni un courrier électronique, il ne sera pas demandé si le courrier électronique n'est pas valide.

       @Override public void onSuccess(LoginResult loginResult) { GraphRequest request = GraphRequest.newMeRequest( AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted(JSONObject object,GraphResponse response) { try { String email=object.getString("email"); Log.d(TAG + "user email ", email); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); request.executeAsync(); } 

    Voici le code complet par lequel je reçois toutes les données dont nous avons besoin de facebook

      login_facebook_button = (LoginButton) findViewById(R.id.login_facebook_button); login_facebook_button.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email", "user_birthday")); //LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends")); // Callback registration login_facebook_button.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // App code Log.e("onSuccess", "--------" + loginResult.getAccessToken()); Log.e("Token", "--------" + loginResult.getAccessToken().getToken()); Log.e("Permision", "--------" + loginResult.getRecentlyGrantedPermissions()); Profile profile = Profile.getCurrentProfile(); Log.e("ProfileDataNameF", "--" + profile.getFirstName()); Log.e("ProfileDataNameL", "--" + profile.getLastName()); Log.e("Image URI", "--" + profile.getLinkUri()); Log.e("OnGraph", "------------------------"); GraphRequest request = GraphRequest.newMeRequest( loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { @Override public void onCompleted( JSONObject object, GraphResponse response) { // Application code Log.e("GraphResponse", "-------------" + response.toString()); } }); Bundle parameters = new Bundle(); parameters.putString("fields", "id,name,link,gender,birthday,email"); request.setParameters(parameters); request.executeAsync(); } @Override public void onCancel() { // App code } @Override public void onError(FacebookException exception) { // App code } }); 

    Et la réponse de l'appel dans le journal est:

     {Response: responseCode: 200, graphObject: {"id":"896337040431723","name":"Aneh Thakur","link":"https:\/\/www.facebook.com\/app_scoped_user_id\/896337040431723\/","gender":"male","birthday":"08\/05\/1992","email":"anehkumar@gmail.com"}, error: null} 

    J'espère que ceci vous aidera.

    • TrinityTuts
     fbLoginButton.setReadPermissions("public_profile", "user_friends", "user_photos", "email", "user_birthday", "public_profile", "contact_email"); 

    "Contact_email" est la permission par courrier électronique, il me manquait lorsque je l'ai ajouté à ce que j'ai travaillé.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.