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 implementarProfileTracker
junto 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