Firebase:从signInWithEmailAndPassword 返回捕获的错误

Toe*_*ash 5 firebase reactjs firebase-authentication

我正在将 firebase 与电子邮件+密码身份验证提供商一起使用。正确的凭据情况可以按预期工作。我的问题是,如果凭据错误,则会捕获错误,但我不知道如何传回此信息。

我正在将 redux store 的调度与mapDispatchToProps.

const mapDispatchToProps = (dispatch) => ({
  startLogin: (email, password) => dispatch(startLogin(email, password))
});
Run Code Online (Sandbox Code Playgroud)

然后,我只需使用组件中的凭据调用此操作,如果返回未定义(引发错误),我会设置错误。

startLogin(email, password).then((data) => {
  if (!data) {
    setErrors({ login: 'Wrong credentials' });
  }
});
Run Code Online (Sandbox Code Playgroud)

我的动作是这样的。

export const startLogin = (email, password) => {
  return firebase.auth().signInWithEmailAndPassword(email, password).catch((err) => {
    console.log(err);
  });
};
Run Code Online (Sandbox Code Playgroud)

这是可行的,但控制台显示 POST 400 错误,我想避免这种情况。

在此输入图像描述

Jai*_*mez 4

您无法避免将该错误记录到控制台中,因为:

1)此 HTTP 请求是 Firebase 身份验证验证用户凭据的方式。因此,库实际上会发布凭据,如果它们不好,那么服务器会以该状态进行响应。

进而...

2)您的浏览器决定将错误请求记录到日志中。Firebase 会打包错误供您处理,但此时浏览器已将其记录到控制台中,这是您无法阻止的。

如果您可以控制 API,您可能希望始终返回带有一些自定义错误处理逻辑的 200 代码,但在这种情况下,您应该考虑与它和平相处:)