Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Firebase AuthUI在使用Apple登录时为显示名称和电子邮件返回nil_Swift_Firebase Authentication_Firebaseui - Fatal编程技术网

Swift Firebase AuthUI在使用Apple登录时为显示名称和电子邮件返回nil

Swift Firebase AuthUI在使用Apple登录时为显示名称和电子邮件返回nil,swift,firebase-authentication,firebaseui,Swift,Firebase Authentication,Firebaseui,当我尝试登录苹果时,Firebase AuthUI会返回显示名称和电子邮件的nil。这是我的密码 lazy var authUI: FUIAuth? = { let UIAuth = FUIAuth.defaultAuthUI() UIAuth?.delegate = self UIAuth?.shouldHideCancelButton = true return UIAuth }() func presentLogin(){

当我尝试登录苹果时,Firebase AuthUI会返回显示名称和电子邮件的nil。这是我的密码

lazy var authUI: FUIAuth? = {
        let UIAuth = FUIAuth.defaultAuthUI()
        UIAuth?.delegate = self
        UIAuth?.shouldHideCancelButton = true
        return UIAuth
}()
func presentLogin(){
        // providers
        var providers: [FUIAuthProvider] = [
            FUIEmailAuth(),
            FUIGoogleAuth(),
            FUIFacebookAuth()
        ]

        if #available(iOS 13.0, *) {
            let appleProvider = FUIOAuth.appleAuthProvider()
            providers.append(appleProvider)
        }

        self.authUI?.providers = providers
        let loginController = self.authUI!.authViewController()
        present(loginController, animated: true, completion: nil)
}

func authUI(_ authUI: FUIAuth, didSignInWith authDataResult: AuthDataResult?, error: Error?) {
        print(authDataResult?.user.displayName)
}

我也有同样的问题!我没有苹果的登录,但即使只是Firebase,它也会显示此信息为零。我的问题是,我没有正确设置Firebase和Xcode的数据以进行对话。您的代码似乎是正确的,但似乎缺少了一些东西。。?你比我更有经验,所以我可能错了!但这是我的密码

   // SIGN UP FUNCTION, first name, last name, email, password
let db = Database.database().reference()
func signUp(firstName: String, lastName: String, email: String, password: String, completion: @escaping (LocalUser?, Error?) -> Void) {
    let usersRef = db.child("users")
    Auth.auth().createUser(withEmail: email, password: password) {[weak self] (result, error) in

        if let uid = result?.user.uid {
            let newUser: [String: String] = ["firstName": firstName, "lastName": lastName, "email": email]
            let newLocalUser = LocalUser(firstName: firstName, lastName: lastName, email: email)
            usersRef.child(uid).setValue(newUser){(error: Error?, ref: DatabaseReference) in
                completion(newLocalUser, error)
            }
        } else {
            completion(nil, nil)
        }
    }
}

// SIGN IN FUNCTION, email, password
func signIn(email: String, password: String, completion: @escaping (LocalUser?, Error?) -> Void) {
    let usersRef = db.child("users")
    Auth.auth().signIn(withEmail: email, password: password) { [weak self]
            (result, error) in
            guard let user = result?.user else {
                completion(nil, error)
                return
            }

            let uid = user.uid

            usersRef.child(uid).observeSingleEvent(of: .value) { (snapshot) in
                let value = snapshot.value as? [String: Any]
                if let user = value {
                    let userObject = LocalUser.makeObjectFrom(user)
                    newUser = userObject
                    completion(userObject, nil)
                } else {
                    completion(nil, error)
                }
            }
    }
}

我没有看到对
db
uid
的引用,因此这可能会有所帮助

我也有同样的问题!我没有苹果的登录,但即使只是Firebase,它也会显示此信息为零。我的问题是,我没有正确设置Firebase和Xcode的数据以进行对话。您的代码似乎是正确的,但似乎缺少了一些东西。。?你比我更有经验,所以我可能错了!但这是我的密码

   // SIGN UP FUNCTION, first name, last name, email, password
let db = Database.database().reference()
func signUp(firstName: String, lastName: String, email: String, password: String, completion: @escaping (LocalUser?, Error?) -> Void) {
    let usersRef = db.child("users")
    Auth.auth().createUser(withEmail: email, password: password) {[weak self] (result, error) in

        if let uid = result?.user.uid {
            let newUser: [String: String] = ["firstName": firstName, "lastName": lastName, "email": email]
            let newLocalUser = LocalUser(firstName: firstName, lastName: lastName, email: email)
            usersRef.child(uid).setValue(newUser){(error: Error?, ref: DatabaseReference) in
                completion(newLocalUser, error)
            }
        } else {
            completion(nil, nil)
        }
    }
}

// SIGN IN FUNCTION, email, password
func signIn(email: String, password: String, completion: @escaping (LocalUser?, Error?) -> Void) {
    let usersRef = db.child("users")
    Auth.auth().signIn(withEmail: email, password: password) { [weak self]
            (result, error) in
            guard let user = result?.user else {
                completion(nil, error)
                return
            }

            let uid = user.uid

            usersRef.child(uid).observeSingleEvent(of: .value) { (snapshot) in
                let value = snapshot.value as? [String: Any]
                if let user = value {
                    let userObject = LocalUser.makeObjectFrom(user)
                    newUser = userObject
                    completion(userObject, nil)
                } else {
                    completion(nil, error)
                }
            }
    }
}
我没有看到对
db
uid
的引用,因此这可能会有所帮助