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));
这很容易,它会工作。 干杯!
- 智能投到BootsrapButton是不可能的,因为endtrip是这个时候改变了的可变属性
- AAR / JAR不会使用Android Studio 3.0 Canary 7生成
- 在Android Studio中将代码从Java转换为Kotlin
- 如何使用Kotlin设置OnEditorActionListener
- 在Android Studio中使用Kotlin捕获和保存图像
- Kotlin中的常量 – 建议如何创建它们?
- Kotlin:NoClassDefFoundError – Android Studio显示不应该在那里的类
- :运行单元测试时出现app:kaptDebugKotlin错误
- 由于app:compileDebugKotlin,Jenkins gradle构建失败