Estoy usando el siguiente código. Quiero la fecha de nacimiento, correo electrónico y género del usuario. Por favor ayuda. ¿Cómo recuperar esos datos?
Este es mi onViewCreated()interior del Fragmento.
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// Setup TextView.
mTextDetails = (TextView) view.findViewById(R.id.text_details);
// Set up Login Button.
LoginButton mButtonLogin = (LoginButton) view.findViewById(R.id.login_button);
// setFragment only if you are using it inside a Fragment.
mButtonLogin.setFragment(this);
mButtonLogin.setReadPermissions("user_friends");
mButtonLogin.setReadPermissions("public_profile");
mButtonLogin.setReadPermissions("email");
mButtonLogin.setReadPermissions("user_birthday");
// Register a callback method when Login Button is Clicked.
mButtonLogin.registerCallback(mCallbackManager, mFacebookCallback);
}
Este es mi método de devolución de llamada.
private FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("Shreks Fragment", "onSuccess");
Profile profile = Profile.getCurrentProfile();
Log.d("Shreks Fragment onSuccess", "" +profile);
// Get User Name
mTextDetails.setText(profile.getName() + "");
}
@Override
public void onCancel() {
Log.d("Shreks Fragmnt", "onCancel");
}
@Override
public void onError(FacebookException e) {
Log.d("Shreks Fragment", "onError " + e);
}
};
android
facebook-android-sdk
facebook-sdk-4.0
Sriyank Siddhartha
fuente
fuente

Respuestas:
Esa no es la forma correcta de establecer los permisos, ya que los está sobrescribiendo con cada llamada al método.
Reemplace esto:
Con lo siguiente, como el método
setReadPermissions()acepta una ArrayList:También aquí se explica cómo consultar datos adicionales GraphRequest:
EDITAR:
Un posible problema es que Facebook asume que su correo electrónico no es válido. Para probarlo, use Graph API Explorer e intente obtenerlo. Si incluso allí no puede recibir su correo electrónico, cámbielo en la configuración de su perfil e intente nuevamente. Este enfoque resolvió este problema para algunos desarrolladores comentando mi respuesta.
fuente
loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));?Use este fragmento para obtener toda la información del perfil
fuente
No obtendrá el perfil
onSuccess()que necesita implementarProfileTrackerjunto con el registro de devolución de llamadaTampoco olvides manejar el inicio y la parada del rastreador de perfil
Ahora tendrá un perfil para obtener AccessToken (resolvió el problema del perfil nulo). Solo tiene que usar " https://developers.facebook.com/docs/android/graph#userdata " para obtener cualquier información.
fuente
Después de iniciar sesión
fuente
Puede usar la clase GraphRequest para emitir llamadas a la API Graph de Facebook para obtener información del usuario. Consulte https://developers.facebook.com/docs/android/graph para obtener más información.
fuente
Esto funcionó para mí, espero ayudar a alguien (usando mi propio botón, no el botón de inicio de sesión de FB)
fuente
El siguiente es el código para encontrar la identificación del correo electrónico, el nombre y la URL del perfil, etc.
fuente
Aquí hay una solución que funciona (2019): ponga este código dentro de su lógica de inicio de sesión;
fuente
Agregue esta línea en Haga clic en el botón
loginButton.setReadPermissions (Arrays.asList ("public_profile", "email", "user_birthday", "user_friends"));
fuente
Utilice el método estático FB getCurrentProfile () de la clase Profile para recuperar esa información.
fuente