使用ios swift中的云端防火墙进行电话身份验证?

在我的应用程序中,我使用电话身份验证登录并存储用户登录用户电话号码和数据库中的uid.当使用现有用户电话号码登录时,它会创建具有相同uid和电话号码的新文档ID,您可以查看图像1和3.

这是我用于登录代码,如果用户存在则意味着它应该检查并导航到主控制器,否则签署用户详细控制器.

@IBAction func loginbtn(_ sender: UIButton) {

    let defaults = UserDefaults.standard
    let credential: PhoneAuthCredential = PhoneAuthProvider.provider().credential(withVerificationID: defaults.string(forKey: "authVID")!,verificationCode: otpText.text!)
    Auth.auth().signIn(with: credential)
    {
        (user,error) in
        if error != nil
        {
            print("error: \(String(describing: error?.localizedDescription))")
        }
        else if user != nil
        {


            print("Phone number: \(String(describing: user?.phoneNumber))")
            let userInfo = user?.providerData[0]
            print("Provider ID: \(String(describing: userInfo?.providerID))")

            let currentUser = Auth.auth().currentUser?.uid
            var ref: DocumentReference? = nil


            ref = self.db.collection("Users").addDocument(data: [
                                    "phoneNumber"   : user?.phoneNumber as Any,"UID"           : user?.uid as Any

                                ]) { err in
                                    if let err = err {

                                        print("Error adding document: \(err)")

                                    } else {

                                        print("Document added with ID: \(ref!.documentID)")

                                    }
                                }

            let storyboard = UIStoryboard(name: "Main",bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "HomeViewController")
            self.present(controller,animated: true,completion: nil)


        } else {




            }


        }

    }

任何人都可以帮我解决这个问题,过去有一天我几乎要挣扎!!!

解决方法

你也可以使用firebase生成的UID.
您已经拥有该行,但尚未使用它:
let currentUser = Auth.auth().currentUser?.uid

所以尝试用“UID”替换“UID”:user?.uid为Any:currentUser为Any

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...