ios - 在 iOS 上使用 Firebase SDK 作为新设备开始

标签 ios swift firebase firebase-authentication

我正在使用官方 SDK 在 iOS 应用程序中实现 Firebase(确切地说是 Auth、Realtime DB 和 Firebase)。用户被认证为匿名用户,其余的取决于成功的认证。

问题是我在测试“全新安装”场景时遇到了问题,因为 SDK 似乎分配了相同的 UID(用户 ID),即使在卸载应用程序或以编程方式从/Documents 文件夹中删除 Firebase 文件后也是如此。

这给我带来了问题,因为以前安装过的设备与新设备的行为不同,因此很难调试“新下载”应用程序的启动过程。

使用 Firebase 控制台删除用户也无济于事,因为只要 token 有效,用户仍然可以保持访问权限,而且即使在删除并重新安装应用程序后, token 似乎仍然有效。

关于如何处理这个问题有什么想法或指导吗?

最佳答案

您遇到的问题有解决方法。每次检测到全新安装时,您都需要强制注销以前的用户。

  1. 每次匿名验证用户时,将用户 ID 存储到 UserDefaults

    UserDefaults.standard.set("ENTER_USERID_HERE", forKey: "user_ID")
    
  2. 每次您的应用启动时,检查用户 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/

相关文章:

iphone - UIButton图像和视网膜显示

ios - ViewDidLoad 方法再次被调用

android - 无法解析 firebase

ios - 读取最初用于向 Firebase 3.0 验证用户身份的提供商(即 Google、Facebook、Firebase)时出现权限问题

angularjs - Firebase 数据库中匹配时发送电子邮件

node.js - 未处理的拒绝 (FirebaseError) : No document to update

ios - 一个应用 "intercept"在iOS中的openURL方法怎么办?

ios - 如何创建队列并手动启动它

iOS Swift - 如何向 UITextView 添加不可编辑的后缀

ios - 快速删除xcode核心数据模型中的数据