Estoy tratando de conseguir la dirección de correo del usuario una vez que se ha iniciado sesión en mi Android app con Facebook (sdk 4.0). He leído muchos mensajes preguntando lo mismo, pero todavía no pude hacer que funcione. Yo, simplemente inicie sesión con el usuario con el código de

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

Entonces puedo hacer el Gráfico de la solicitud de la API con

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 salida es sólo

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

Incluso si puedo quitar los «campos» de la parte, puedo obtener un JSON con un montón de datos públicos, pero nunca el campo de correo electrónico. Estoy probando esto en mi propio Facebook de la cuenta, y tengo una dirección de correo electrónico asociada a la misma.

¿de encontrar una respuesta a su pregunta? Si sí, entonces por favor, publicarlo aquí como una respuesta.
En realidad el código de ur pregunta trabajado para mí por encima de todas las respuestas de abajo , gracias hombre

OriginalEl autor splinter123 | 2015-04-12

3 Comentarios

  1. 13

    Usted puede obtener el usuario que ha iniciado correo electrónico de la siguiente manera , Pero tenga en cuenta que ,

    1. No garantiza que usted obtendrá una dirección de correo electrónico leer aquí .

    2. En algunos casos, a pesar de que el usuario ha proporcionado un correo electrónico, no va a venir a través de la solicitud, si el correo electrónico no es válida.

      @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();                        
       }
    Mr pRaNay, gracias por la edición, apreciamos que la

    OriginalEl autor Heshan Sandeepa

  2. 12

    Aquí está el código completo a través de la cual tengo todos los datos que necesitamos 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
    }
    });

    Y la respuesta de la llamada en el registro es:

    {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":"[email protected]"}, error: null}

    Espero que esto le ayudará.

    Gracias, esta es la única solución que funcionó en mi caso.
    Gracias tio .. me ayudó a mí también 🙂
    Ver todos los parámetros aquí developers.facebook.com/docs/graph-api/reference/v2.6/user

    OriginalEl autor Aneh Thakur

  3. 1
    fbLoginButton.setReadPermissions("public_profile", "user_friends", "user_photos", "email", "user_birthday", "public_profile", "contact_email");

    «contact_email» es el correo electrónico permiso, me faltaba que cuando he añadido a tengo las cosas de trabajo.

    OriginalEl autor Dhiraj Singh

Dejar respuesta

Please enter your comment!
Please enter your name here