【问题标题】:Firebase: Email has been badly formattedFirebase:电子邮件格式错误
【发布时间】:2019-06-27 00:19:12
【问题描述】:

我正在使用 react-native、formik 表单、是的验证和 firebase 身份验证。但是,当我尝试登录时,我不断收到此错误:

createUser 错误:[错误:电子邮件地址格式错误。]

这是我的代码: Firebase API:

export const signInUser = (email, password) => {
console.log('signInUser has been called')
firebase.auth().signInWithEmailAndPassword(email.trim(), password)
    .catch((error) => console.log('signIn error: ', error));
    if (email==""){
        console.log('email empty')
    } 
    if (password==""){
        console.log('password empty')
    }
    if (email=="abc@gmail.com"){
        console.log('email not empty')
    }     

}

登录屏幕:

  createUser(){
    FirebaseAPI.createUser(this.state.email, this.state.password)
  }

  signIn(){
    FirebaseAPI.signInUser(this.state.email, this.state.password)
  }

表格:

<Formik 
          initialValues={{ email: '', password:'' }} 
          onSubmit={(values: FormValues, formikBag: FormikActions<FormValues>) =>
                    this.handleSubmit(values, formikBag)}
          validationSchema= {yupObject().shape({
                    email: yupString()
                    .email("Inavlid email address")
                    .required("This field is required"),
                    password: yupString()
                      .min(8, "Password must be longer than 8 characters")
                      .required("This field is required")
                    })}
        render={(formikBag: FormikProps<FormValues>) => this.renderForm(formikBag)}
      />

这是记录值后的结果:

[09:39:16] signInUser has been called
[09:39:16] email empty
[09:39:16] password empty
[09:39:16] signIn error:  [Error: The email address is badly formatted.]

记录实际值不会给出任何结果,因此我选择检查字符串是否为空,并且看起来确实如此。 但是,当我删除 formik 表单并使用没有验证的常规输入字段时,一切正常。

【问题讨论】:

  • 错误信息非常明确:this.state.email 似乎不是有效的电子邮件地址。您可能希望在调用 createUser 之前记录该变量。
  • 请不要使用文字内容的截图。相反,只需将文本本身添加到您的问题中并使用 Stack Overflow 的格式化工具。另外:确保您问题中的代码已更新,以显示生成您共享的输出的日志记录语句。
  • 目前还不清楚您在记录值的位置共享的代码与对firebase.auth() .signInWithEmailAndPassword(email.trim(), password) 的调用有何关联。在后者中,您为email.trim() 传递了一个无效值。我会记录那个精确的值 (console.log(email.trim())),看看有什么问题。
  • 我已经更新了问题。谢谢你的提示
  • 这将问题变成了“我如何从 Formik 表单中获取值?”我没有使用 Formik 的经验,但缩小问题的范围可能有助于吸引该技术的专家。

标签: javascript react-native firebase-authentication formik yup


【解决方案1】:

在使用之前验证this.state.email。类似问题请参考this

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 2018-09-24
    • 2020-04-15
    • 2021-01-03
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多