【发布时间】:2018-09-18 09:44:01
【问题描述】:
获取当前用户的Firebase Auth doc's recommended way是:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// User is signed in
} else {
// No user is signed in
}
所以我在第一次活动开始时就这样做了:
override fun onCreate(savedInstanceState: Bundle?) {
Log.d(TAG, "⟳ onCreate")
super.onCreate(savedInstanceState)
if (FirebaseAuth.getInstance().currentUser == null) {
Log.d(TAG, "User is null. Sending user to log in.")
val intent = Intent(this, FacebookLoginActivity::class.java)
startActivity(intent)
finish()
} else {
Log.d(TAG, "User has been found. Launching MainActivity")
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}
但这就是奇怪的事情开始发生的时候????
步骤:
- 我从内存中删除了应用程序
- 删除所有数据和缓存
-
卸载并再次安装,然后启动
实际:
FirebaseAuth.getInstance().currentUser不为空!好吧,猜测 Firebase 库正在尝试做一些聪明的事情并找出我以前的登录历史,但是:- 它返回的 uid 不是我的用户 ID。我无法使用它,因为我已经在我的数据库中保存了该用户的数据,并且之前为该用户返回了另一个合法的 uid。
- 我找不到这个 uid https://console.firebase.google.com/u/0/project/.../authentication/users这怎么可能?
- 此 uid 多次弹出导致我出错,并且始终是相同的流氓 uid。
我检查了几件事:
FirebaseAuth.getInstance().currentUser.providerData显示这个 uid 与我的 Facebook 帐户相关联,所以我 必须以前用它登录过。 (我在下一个活动中调用FacebookAuthProvider.getCredential(...))但是我的真实合法uid 也应该与我感兴趣的Facebook 帐户相关联。FirebaseAuth.getInstance().currentUser.isAnonymous 返回 false,所以 问题可能与匿名登录无关
如何从系统中清除这个“幻影”流氓用户 ID?
我该如何检查?我不想每次用户打开应用时都调用FacebookAuthProvider.getCredential(...)。
(使用 'firebase-auth:12.0.1')
【问题讨论】:
-
您是否还要从 Firebase 控制台中删除用户?
-
@AlexMamo 是的,有时我会在测试时删除控制台上的用户。我不能确定我是否删除了这个用户。
标签: android firebase kotlin firebase-authentication