swift - Firebase 数据库身份验证 Swift

标签 swift firebase firebase-realtime-database firebase-security

我通过 Firebase 实现了身份验证的登录和注册 View 。那么我如何才能对我的数据库进行身份验证?我更改了规则并输入:

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

我也写了获取用户 UID 的代码,但是我怎么能告诉我的数据库我已经通过身份验证了呢?

PS:我需要 Swift 中的示例。

最佳答案

swift 5 仅用于身份验证,然后使用您自己的代码进行扩展

 let credential = PhoneAuthProvider.provider().credential(
        withVerificationID: FireBaseverficationID,
        verificationCode: "your device code")

 let defaults = UserDefaults(suiteName: "group.Company.AppName")
 let encodedData = NSKeyedArchiver.archivedData(withRootObject: credential)
    defaults?.set(encodedData, forKey: "firebasecredential")

在此之后,在您的扩展文件中解码此默认值并使用凭据进行登录

let decoded = UserDefaults(suiteName: "group.Company.AppName")?.object(forKey: "firebasecredential") as! Data
    let credential = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! PhoneAuthCredential

//MARK: - If user already login with credential
    let userid = Auth.auth().currentUser
    if userid == nil{
        Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
            if error != nil {

                return
            }
            else
            {
                //MARK:- Your desire code After Login
            }
        }
    }else{
        //MARK:- Your desire code if User already Login
    }

关于swift - Firebase 数据库身份验证 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53337904/

相关文章:

swift - “强制为 Any”但属性属于 UIColor 类型

ios - 无法让 UISwitch 约束工作 - swift 4

swift - 向特定用户发送推送通知?

firebase - 无法破坏 Firebase 连接,导致热 Lambda 由于 'Firebase App name ' [DEFAULT ]' already exists'

swift - 如何编写存储相同类型的生成器的通用 Swift 类

ios - 从 URLSession 返回数据并保存在属性变量中

javascript - Firestore 时间戳属性在管理 SDK 上带有下划线前缀,但在客户端 SDK 中则没有

typescript - 比较类型 'Snapshot<T>' 和 'DataSnapshot' 时堆栈深度过多。 [2321服]

ios - Firebase 嵌套解析 Swift

ios - 检索 Firebase 数据库字符串并将字符串转换为整数以使标签不起作用