我正在执行检查以查看是否存在用户 session ,如果没有则创建一个匿名帐户
这在几天前一直运行良好,但就在发布之前,我们进行了最后的检查,现在用户检查返回了一个用户 ID,尽管本不应该有一个用户 ID。
应用程序已全新安装,但 usr 永远不会为零 - 这正是我所期望的。我们每次卸载重装,用户ID都是完全一样的。 Firebase 中没有创建匿名用户。
故事中的另一个转折可能有助于诊断。它在模拟器上按预期工作......我最近一直在努力设置推送通知。
// Check if user is logged in, if not, create anonymous auth so users can access DB and storage w/o an account
let checkAuth = Auth.auth().addStateDidChangeListener { auth, usr in
if usr == nil {
// No user is signed in.
Auth.auth().signInAnonymously() { (usr, err) in
if (err == nil) {
let uid = usr!.uid
print("Anon User ID \(uid)")
} else {
print("Anon auth error \(String(describing: err!.localizedDescription))")
}
}
} else {
print("User ID \(usr!.uid) and provider \(usr!.providerID)")
}
}
Auth.auth().removeStateDidChangeListener(checkAuth)
return true
最佳答案
Firebase 可能使用钥匙串(keychain)来存储用户 session 。钥匙串(keychain)在模拟器和设备上的行为不同。因为它使用钥匙串(keychain),所以存储的用户 session 将在应用程序卸载/重新安装后继续存在。
一个简单的修复:使用 UserDefaults 存储一个标志,确定这是否是应用程序安装后的第一次运行。在你的 AppDelegate
中,查询标志,试试? Auth.auth().signOut()
并更新标志。
关于swift - Firebase Auth Check 返回一个用户,即使那里(绝对)不应该是一个用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347829/