Firebase AuthUI возвращает ноль для отображаемого имени и адреса электронной почты. Войти через Apple - PullRequest
1 голос
/ 05 февраля 2020

Когда я пытаюсь войти в Apple, 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)
}

1 Ответ

0 голосов
/ 05 февраля 2020

У меня была такая же проблема! У меня нет входа в Apple, но даже при использовании 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, так что это может помочь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...