Android Firebase Facebook登录无法弹出切换账号窗口求助
解决Facebook登录跳过账号选择对话框的问题
针对你遇到的Facebook登录后直接复用之前凭据、不弹出账号选择框的问题,你可以通过Facebook的LoginManager类主动登出来清除本地登录会话,这样每次点击登录按钮时就会重新弹出账号选择界面了。
具体实现步骤:
- 在触发Facebook登录的逻辑前(比如登录按钮的点击事件中,或者
LoginActivity的onStart方法里),调用LoginManager.getInstance().logOut()方法。 - 这个方法会清除Facebook SDK保存的本地登录状态,强制下次登录时重新显示账号选择对话框。
结合你的代码修改示例:
你可以在LoginActivity的onStart方法中添加Facebook登出的逻辑,和你处理Google登录的方式保持一致:
@Override protected void onStart(){ super.onStart(); firebaseAuth.addAuthStateListener(authStateListener); // 清除Facebook本地登录会话,强制下次登录弹出账号选择 LoginManager.getInstance().logOut(); // 你的Google登出逻辑 googleSignInClient.signOut(); }
如果你希望仅在用户点击Facebook登录按钮时才清除会话,也可以修改按钮的点击逻辑:
signInFBBtn.setOnClickListener(v -> { // 先登出Facebook清除本地会话 LoginManager.getInstance().logOut(); // 触发Facebook登录流程 LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile", "email")); });
补充说明:
LoginManager.getInstance().logOut()只会清除本地的Facebook登录状态,不会直接影响Firebase的Auth状态(你已通过AccessTokenTracker在Facebook Token失效时处理了Firebase登出,这部分逻辑可以保留)。- 这个操作和Google的
googleSignInClient.signOut()逻辑完全对应,都是通过清除本地登录会话,实现每次登录都重新选择账号的效果。
内容的提问来源于stack exchange,提问作者Yash Umale
相关产品推荐
相关产品推荐

