Firebase Android Auth objeto sin devolución de llamada de disparo
He estado pasando por los documentos de Firebase para configurar un sistema de autenticación de usuarios en mi aplicación para Android. ¡Por alguna razón sin embargo, no parece que ninguna de las devoluciones de llamada está funcionando en mi objeto de FirebaseAuth!
Por ejemplo, con la configuración de la autenticación de Facebook como se indica aquí
- No puedo registrarme usando el módulo de firebase auth
- En la API de Firebase 9.0.0, ¿cómo comprobar que el usuario tiene una sesión Auth válida o no?
- Uid de firewall y firebase uid no coinciden después de actualizar firebase a 9.2.0
- Uso del correo y la contraseña para autenticarse mediante la API REST
- Google Firebase se cierra y se olvida del usuario en la aplicación para Android
private void handleFacebookAccessToken(AccessToken token) { Log.d("AUTH", "handleFacebookAccessToken:" + token.getToken()); // ... AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); Log.d("AUTH", "Credential: "+credential); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { Log.d("AUTH", "signInWithCredential:onComplete:" + task.isSuccessful()); // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { Log.w("AUTH", "signInWithCredential", task.getException()); Toast.makeText(LoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } // ... } }); }
Todo bien por parte de Facebook, pero cuando se trata de iniciar sesión con las credenciales fb recuperadas, la función signInWithCredential no ejecuta ninguna devolución de llamada y nada parece suceder en mi base de datos de usuarios.
Además he intentado el mucho más simple
mAuth.createUserWithEmailAndPassword(etUserID.getText().toString(), etPassword.getText().toString());
Y nada sucede también. He habilitado a ambos proveedores en mi consola Firebase y he descargado el último archivo google-services.json del proyecto. ¿Me estoy perdiendo de algo?
EDIT: Acabo de ejecutar la demo de autenticación de inicio rápido y no funciona tan bien. Veo en mi emulador que esta aplicación no se ejecutará a menos que actualice los servicios de google. ¿Es esta la causa de este error? He intentado actualizar los servicios de google en varios emuladores y eso sólo devuelve un error.
- Cómo lidiar con el inicio en frío de una aplicación donde el usuario ha iniciado sesión con Firebase en la ejecución anterior
- Firebase sigue lanzando ID de cliente OAuth2 en la configuración del servidor no se encuentra
- FirebaseUI auth se está estrellando en android
- Obtener id token en la aplicación de Android y verificarlo en el servidor de back-end (¿Cómo usar id token?)
- Firebase sobrescribe Signin con la cuenta de Google
- El inicio de sesión de Facebook no funciona ya que actualizé la aplicación de Firebase a la nueva consola (sólo)
- Firebase Auth - con correo electrónico y contraseña - Comprobar usuario ya registrado
- Vaciar el campo de correo electrónico de Firebase Auth Usuario que utiliza Integración de inicio de sesión de Facebook (Firebase 3.0)
Tengo que trabajar sólo en un dispositivo real de Android, pero no tuvo suerte con el emulador.
Para el dispositivo, deberá agregar la siguiente dependencia en el archivo gradle de la aplicación:
compile 'com.google.android.gms:play-services-auth:9.0.2'
No he probado, pero parece que si actualizas la imagen del emulador con un nuevo google play servicios, también debería funcionar.
Espero eso ayude.
Parece que el problema está causado por ciertos emuladores que no admiten las últimas versiones de Google Play Services. (Verá un error en logcat) Galaxy Nexus 5x API 23 con API de Google parecen funcionar con los inicios de sesión.
Tuve el mismo problema y, finalmente, en mi caso me olvidé de habilitarlo en la consola firebase
En un dispositivo físico, necesité actualizar los servicios de Google Play para que la devolución de llamada funcione
Tuve el mismo problema aquí, y la solución fue muy simple: dejar de usar el emulador y empezar a usar un dispositivo físico para probar la aplicación. No sé por qué, pero parece que el emulador tiene algunos problemas con el firebase: /
Resuelto gracias a @feroult post y otros recursos. En mi caso OnCompleteListener
nunca se llamó después de actualizar el build.gradle con la nueva versión de Play Services Library y las bibliotecas de Firebase. La solución es actualizar la aplicación de Play Services instalada en el Emulador.
En mi caso, comenzó a trabajar con la versión 11.0.4 de la biblioteca de Play Services y la versión 11.3.02 de la aplicación Play Services instalada en Emulator.