我正在使用官方 SDK 在 iOS 应用程序中实现 Firebase(确切地说是 Auth、Realtime DB 和 Firebase)。用户被认证为匿名用户,其余的取决于成功的认证。
问题是我在测试“全新安装”场景时遇到了问题,因为 SDK 似乎分配了相同的 UID(用户 ID),即使在卸载应用程序或以编程方式从/Documents 文件夹中删除 Firebase 文件后也是如此。
这给我带来了问题,因为以前安装过的设备与新设备的行为不同,因此很难调试“新下载”应用程序的启动过程。
使用 Firebase 控制台删除用户也无济于事,因为只要 token 有效,用户仍然可以保持访问权限,而且即使在删除并重新安装应用程序后, token 似乎仍然有效。
关于如何处理这个问题有什么想法或指导吗?
最佳答案
您遇到的问题有解决方法。每次检测到全新安装时,您都需要强制注销以前的用户。
每次匿名验证用户时,将用户 ID 存储到
UserDefaults
。UserDefaults.standard.set("ENTER_USERID_HERE", forKey: "user_ID")
每次您的应用启动时,检查用户 ID 是否设置为
UserDefaults
。- 如果用户 ID 存在,则它不是全新安装,因为每次删除应用程序时 UserDefaults 都会重置。
如果用户 ID 不存在,则为全新安装。如果是这种情况,您需要注销用户以解决您的问题。
if UserDefaults.standard.object(forKey: "user_ID") == nil { let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print ("Error signing out: %@", signOutError) } }
注意:这是一种解决方法,您应该只在测试时使用它。
关于ios - 在 iOS 上使用 Firebase SDK 作为新设备开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55012720/