Google Firebase在Android应用中注销并忘记用户

我面临着下一个问题:

当我打电话给mFirebaseAuth.signOut(); 或者mFirebaseUser.delete(); 我的FirebaseAuth.AuthStateListener()工作正常,并返回null作为onAuthStateChanged FirebaseUser实例,我刷新用户界面,并显示“用Google登录”按钮。

但是当我想再次登录时,我看不到用户的弹出窗口(我的设备上有两个用户,附加了图像)。 应用程序仅在首次登录时显示此弹出窗口,之后它将使用同一用户。 如果我在设置屏幕上清除应用程序的数据,我将能够再次看到这个弹出窗口。

我的问题是如何在每次退出后显示这个弹出窗口。

在这里输入图像描述

更新:我按下登录按钮时运行此代码:

 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); 

onActivityResult()我创建一个GoogleSignInResult的实例,所以我需要的一切发生后,我打电话startActivityForResult()

在Firebase Auth快速入门示例代码中 ,Google提供商注销包括这些步骤。 您在Auth.GoogleSignInApi.signOut()时是否拨打了Auth.GoogleSignInApi.signOut()

 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); } }); } 

另一种选择是使用FirebaseUI库。 它简化了登录注销操作,因为它将为您完成所有繁重的工作。

科特林

 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 } }); 

希望这可以帮助

对于其他任何想要这样的结果的人(例如回到google账户选项)。

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

将其添加到登录页面中,在传递到下一个活动之前,只需调用SignOut()

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

然后,在你的其他班级,你可以打电话

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

这很容易,它会工作。 干杯!