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 FireAuthErrorCode_Swift_Firebase_Firebase Authentication - Fatal编程技术网

Swift 电子邮件地址为空时的Firebase FireAuthErrorCode

Swift 电子邮件地址为空时的Firebase FireAuthErrorCode,swift,firebase,firebase-authentication,Swift,Firebase,Firebase Authentication,我正在为firebase电子邮件和密码注册实施FireAuth错误代码,除了2种情况外,它们都能工作。当电子邮件地址字段为空时,将调用case.errorCodeInvalidEmail。当我键入一些字母(没有有效的电子邮件地址)时,将调用默认大小写。对于密码字段,则相反。当我键入一个字符时,将调用大小写。ErrorCodeWeakPassword。当我将字段留空时,将转到默认大小写 这是我的代码: @IBAction func SignInButtonPressed(_ sender: Log

我正在为
firebase电子邮件
密码注册
实施
FireAuth错误
代码,除了2种情况外,它们都能工作。当
电子邮件地址
字段为空时,将调用
case.errorCodeInvalidEmail
。当我键入一些
字母(没有有效的电子邮件地址)
时,将调用默认大小写。对于
密码字段
,则相反。当我键入一个字符时,将调用大小写。
ErrorCodeWeakPassword
。当我将字段留空时,将转到默认大小写

这是我的代码:

@IBAction func SignInButtonPressed(_ sender: LogInVcButton) {
    if let email = emailField.text, let password = pwdField.text {
        FIRAuth.auth()?.signIn(withEmail: email, password: password, completion: { (user, error) in
            if error == nil {
                print("Email User Authenticated with Firebase")
            } else {
                FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in
                    if error != nil {
                            if let errCode = FIRAuthErrorCode(rawValue: (error?._code)!) {
                            switch errCode {
                                case .errorCodeEmailAlreadyInUse: self.errorMessage(message: "Email address is already in use")
                                case .errorCodeInvalidEmail: self.errorMessage(message: "Email address is invalid")
                                case .errorCodeWrongPassword: self.errorMessage(message: "Wrong password")
                                case .errorCodeWeakPassword: self.errorMessage(message: "Password needs to be minimum 6 characters")
                                // TODO: A case for if the password field is blank
                                default: print("default")
                                }
                            } else {
                                print("Successfully Authenticated with Firebase")
                        }
                    }
                })
            }
        })
    }
}
我不知道哪个错误代码会处理错误的电子邮件格式或文档中的空密码字段。我可以尝试自己处理它们,但我认为
firebase
会涵盖这些情况吗

有人能帮我吗

编辑:在深入挖掘之后,我设法打印出了firebase对错误的描述

  • 如果我在电子邮件地址和密码为空的情况下预登录:
  • 可选(Error Domain=FIRAuthErrorDomain Code=17008“电子邮件地址格式不正确。”UserInfo={NSLocalizedDescription=电子邮件地址格式不正确,错误\名称=错误\无效\电子邮件})

    case.errorCodeInvalidEmail被调用。这是确定的

  • 当我写入无效的电子邮件地址和空密码时,我得到:
  • 可选(Error Domain=FIRAuthErrorDomain Code=17999“发生内部错误,请打印并检查错误详细信息以了解更多信息。”UserInfo={NSUnderlyingError=0x6080005650 Domain=FirauthiInternalErrorDomain Code=3”(null)“UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey”={ 代码=400; 错误=( { 域=全局; message=“缺少密码”; 原因=无效; } ); message=“缺少密码”; }}},error\u name=error\u INTERNAL\u error,NSLocalizedDescription=发生内部错误,请打印并检查错误详细信息以获取详细信息。})

    errorCodeInternalError:它说缺少密码,但它应该检查电子邮件地址

  • 当我在密码字段中键入无效的电子邮件地址和一个字符时,我得到:
  • 可选(Error Domain=FIRAuthErrorDomain Code=17008“电子邮件地址格式不正确。”UserInfo={NSLocalizedDescription=电子邮件地址格式不正确,错误\名称=错误\无效\电子邮件})

    这似乎还可以

  • 当我键入有效的电子邮件地址而没有密码时:
  • 可选(Error Domain=FIRAuthErrorDomain Code=17999“发生内部错误,请打印并检查错误详细信息以了解更多信息。”UserInfo={NSUnderlyingError=0x6080005650{Error Domain=FIRAuthInternalErrorDomain Code=3”(null)“UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey”={ 代码=400; 错误=( { 域=全局; message=“缺少密码”; 原因=无效; } ); message=“缺少密码”; }}},error\u name=error\u INTERNAL\u error,NSLocalizedDescription=发生内部错误,请打印并检查错误详细信息以获取详细信息。})

    NOK..errorCodeInternalError

  • 当我在pw字段中键入有效的电子邮件地址和一个字符时
  • 可选(Error Domain=FIRAuthErrorDomain Code=17026“密码长度必须大于等于6个字符。”UserInfo={NSLocalizedDescription=密码长度必须大于等于6个字符,Error\u name=Error\u password,NSLocalizedFailureReason=密码长度至少应为6个字符})

    .errorCodeWeakPassword被调用。这也可以。第5点的情况也应该如此

  • 当我没有键入电子邮件和有效密码时
  • 可选(Error Domain=FIRAuthErrorDomain Code=17999“发生内部错误,请打印并检查错误详细信息以了解更多信息。”UserInfo={NSUnderlyingError=0x600000053ce0{Error Domain=FirauthiInternalErrorDomain Code=3”(null)“UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey”={ 代码=400; 错误=( { 域=全局; message=“缺少电子邮件”; 原因=无效; } ); message=“缺少电子邮件”; }}},error\u name=error\u INTERNAL\u error,NSLocalizedDescription=发生内部错误,请打印并检查错误详细信息以获取详细信息。})

    调用NOK内部错误。为什么与第1点不同


    总是有错误代码。我会打印
    errCode
    ,而不是硬编码的
    “默认值“
    在默认情况下。但我不想使用默认情况。这太一般化了,您不应该在默认块中处理身份验证错误。因此,您需要为要处理的所有错误代码添加
    case
    块。要找出在什么情况下得到的代码,请扫描您链接的页面(您提到的错误代码有四个以上),或打印默认块中得到的错误代码。请确定还有更多错误代码,但我提到的情况除外。我只是看不到它们。只需
    打印(错误?.code)
    完成块中的任何位置,然后尝试使用无效电子邮件创建用户。您将在控制台中找到代码,使用它在
    开关
    语句中为无效电子邮件编写一个新的
    案例