Firebase使用电子邮件和密码创建用户给我字符串必须是解包错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Firebase使用电子邮件和密码创建用户给我字符串必须是解包错误相关的知识,希望对你有一定的参考价值。

Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
    // ...
    guard let user = authResult?.user else { return }
}

我从Firebase复制并粘贴了这一行并遇到了这些错误。

Errors

答案

这些错误是由您的电子邮件和密码是可选的(String?vs String)引起的。在将它们传递给createUser之前,您需要打开它们。您可以在进行调用之前添加行guard let email = email, let password = password else { return }以删除错误。然后,根据您获取值的方式,您可能希望显示用户消息(如果它们为空)。

另一答案

@Jeremiah是对的。您正尝试将“可选”字符串传递到Firebase函数中。

可选意味着它可以有一个值,也可以是零。您可以通过几种不同的方式打开这两个字符串(电子邮件和密码):

    guard let email = email?.trimmingCharacters(in: .whitespacesAndNewlines).lowercased(),
        !emailAddress.isEmpty else {
            // Uh oh email address is empty!  Show an error.
            return
    }

    guard let password = password, !password.isEmpty else {
        // Uh oh password is empty!  Show an error.
        return
    }
    login(with: emailAddress, password: password)

要么:

    if let email = email?.trimmingCharacters(in: .whitespacesAndNewlines).lowercased(),
        let password = password, !email.isEmpty, !password.isEmpty {
        // Both email and password have values, do stuff:
    login(with: emailAddress, password: password)
            return
    } else {
        // Either email or password are empty, show an error
        return
    }

/// Asks Firebase to login our user.
private func login(with email: String, password: String) {
    Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
        if let error = error, !error.isEmpty {
            // Error signing in!
        }

    }
}

以上是关于Firebase使用电子邮件和密码创建用户给我字符串必须是解包错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 9 电子邮件和密码创建用户并将该用户的其他数据保存在 firebase db 集合中?

Firebase Android -- 在 Kotlin 中使用电子邮件和密码创建用户

如何合并两个 Firebase 帐户(一个使用电子邮件创建,另一个使用电话号码创建)?

使用电子邮件和密码创建帐户时 Flutter + Firebase updateDisplayName

firebase:如何链接电子邮件验证和密码

如何为 Firebase (Kotlin) 创建自定义身份验证