Autorización de Facebook para Android: no se puede iniciar sesión cuando la aplicación oficial de Facebook está instalada
Necesito iniciar sesión en Facebook y obtener los mismos campos, como el correo electrónico, etc. Utilizo el SDK de Facebook, y configuro el Hash de mi clave de Android en developers.facebook y configuro "Configurado para Android SSO". En el simulador y en algunos dispositivos la aplicación funciona bien.
Pero si la aplicación oficial de Facebook está instalada en el dispositivo, mi aplicación no funciona: presiono el botón de inicio de sesión, pero no veo un cuadro de diálogo con una vista web donde se solicitan mi contraseña y el inicio de sesión. Parece que el problema en la pregunta de desbordamiento de pilaEl uso de facebook.authorize con el SDK de Android no requiere onActivityResult o pregunta de desbordamiento de pilaAndroid API de inicio de sesión único?, pero no puedo entender como resolverlo.
Mi código@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
this.facebookConnector.getFacebook().authorizeCallback(requestCode, resultCode, data);
}
public void getAccessToken() {
SessionEvents.AuthListener listener = new SessionEvents.AuthListener() {
@Override
public void onAuthSucceed() {
setupAccessToken(facebookConnector.getFacebook().getAccessToken());
}
@Override
public void onAuthFail(String error) {
Toast.makeText(getApplicationContext(), getString(R.string.error_login), Toast.LENGTH_SHORT).show();
}
};
SessionEvents.addAuthListener(listener);
facebookConnector.login();
}
código facebookconnectorpublic class FacebookConnector {
public void login() {
if (!facebook.isSessionValid()) {
facebook.authorize(this.activity, this.permissions, new LoginDialogListener());
}
}
private final class LoginDialogListener implements DialogListener {
public void onComplete(Bundle values) {
SessionEvents.onLoginSuccess();
}
public void onFacebookError(FacebookError error) {
SessionEvents.onLoginError(error.getMessage());
}
public void onError(DialogError error) {
SessionEvents.onLoginError(error.getMessage());
}
public void onCancel() {
SessionEvents.onLoginError("Action Canceled");
}
}
}