繁体   English   中英

如何使用 email 登录和 Firebase 密码?

[英]How to use sign in with email and password with Firebase?

这将是我在 Stack Overflow 上最长的帖子,我并不为此感到自豪。 重点应该放在前两个代码块上,我在其中定义了处理 firebase 的函数。 其他位只是一个健全的检查,我没有遗漏任何简单的东西。

问题是我的表单不会被提交(并且 onSubmit 内部的函数甚至不会运行)。 单击“提交”按钮后,我想使用 email 和密码将用户注册到 Firebase。 这行不通。

async createUserProfileDocument(user, additionalData) {
    if (!user) return
    const userRef = this.firestore.doc(`users/${user.uid}`)
    const snapshot = await userRef.get()
    if (!snapshot.exists) {
      const { displayName, email, photoURL } = user
      const createdAt = moment().format('MMMM Do YYYY, h:mm:ss a')
      try {
        await userRef.set({
          displayName,
          email,
          photoURL,
          createdAt,
          ...additionalData,
        })
      } catch (error) {
        console.error('error creating user: ', error)
      }
    }
    return this.getUserDocument(user.uid)
  }
export const Register = () => {
  const history = useHistory()

  async function writeToFirebase(email, senha, values) {
    try {
      const { user } = await firebaseService.auth.createUserWithEmailAndPassword(email, senha)
      firebaseService.createUserProfileDocument(user, values)
      history.push('/')
    } catch (error) {
      console.error('error: ', error)
    }
  }

  function onSubmit(values, { setSubmitting }) {
    values.displayName = values.user.nome
    writeToFirebase(values.user.email, values.user.senha, values)
    setSubmitting(false)
  }

  return (
    <div className="booking">
      <Formik
        initialValues={initialValues}
        validationSchema={Yup.object({ ...validationService.generateBasicUserSchema() })}
        onSubmit={onSubmit}>
        <Form>
          <EWUserBasicDataFields />
          <button type="submit">Submit</button>
        </Form>
      </Formik>
    </div>
  )
}

正如我在评论中所说

做一些测试,删除validationSchema ,看看你是否可以提交表单。 如果可以,问题是表格无效。 还要检查控制台以查看是否没有任何错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM