Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Google Firebase se cierra y se olvida del usuario en la aplicación para Android

Me he enfrentado con el siguiente problema:

Cuando llamo mFirebaseAuth.signOut(); O mFirebaseUser.delete(); Mi FirebaseAuth.AuthStateListener() funciona correctamente y devuelve null como instancia de FirebaseUser en onAuthStateChanged , refresco la interfaz de usuario y muestra el botón "Iniciar sesión con Google".

Pero cuando quiero iniciar sesión de nuevo, no veo el pop-up con los usuarios (tengo dos usuarios en mi dispositivo, adjunto la imagen). La aplicación muestra esta ventana emergente sólo en el primer inicio de sesión, después de que utiliza el mismo usuario. Si borro los datos de la aplicación en la pantalla de configuración, podré ver esta ventana emergente nuevamente.

Mi pregunta es cómo mostrar este pop-up después de cada salida.

Introduzca aquí la descripción de la imagen

ACTUALIZACIÓN: ejecuto este código cuando presione el botón de inicio de sesión:

 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build(); mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, FirebaseActivity.REQUEST_SIGN_IN); 

En onActivityResult() i gen una instancia de GoogleSignInResult así que todo lo que necesito sucede después de que yo llame a startActivityForResult()

3 Solutions collect form web for “Google Firebase se cierra y se olvida del usuario en la aplicación para Android”

En el código de ejemplo de Firebase Auth Quickstart , el inicio de sesión para el proveedor de Google incluye estos pasos. ¿Estás llamando a Auth.GoogleSignInApi.signOut() cuando sales de sesión?

 private void signOut() { // Firebase sign out mAuth.signOut(); // Google sign out Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback( new ResultCallback<Status>() { @Override public void onResult(@NonNull Status status) { updateUI(null); } }); } 

Para cualquier otra persona que desee este resultado (como en obtener las opciones de cuenta de google de nuevo) en una actividad diferente.

 public static void signOut() { // Firebase sign out mAuth.signOut(); // Google sign out Auth.GoogleSignInApi.signOut(mGoogleApiClient); } 

Agregue esto en la página de inicio de sesión y antes de pasar a la siguiente actividad, simplemente llame a SignOut() .

 // everything ok... signOut(); startActivity(new Intent(SignIn.this,NextOne.class)); 

Y luego, en su otra clase puede llamar

 FirebaseAuth.getInstance().signOut(); startActivity(new Intent(NextClass.this, SignIn.class)); 

Es fácil, y funcionará. ¡Aclamaciones!

Otra opción es utilizar la biblioteca FirebaseUI . Simplifica las operaciones de inicio de sesión y cierre de sesión en el sentido de que hará todo el trabajo pesado para usted.

Kotlin

 AuthUI.getInstance().signOut(this).addOnCompleteListener { // do something here } 

Java

 AuthUI.getInstance() .signOut(ActivityMainOld.this) .addOnCompleteListener(new OnCompleteListener<Void>(){ @Override public void onComplete(@NonNull Task<Void> task) { // do something here } }); 

Espero que esto ayude

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.