Firebase:从signInWithEmailAndPassword返回捕获的错误

时间:2018-03-26 01:08:19

标签: reactjs firebase firebase-authentication

我正在使用firebase和Email + Password auth提供程序。正确的凭据案例按预期工作。我的问题是,如果凭据错误,会发现错误,但我不知道如何传回这些信息。

我将来自redux商店的调度与mapDispatchToProps连接起来。

const mapDispatchToProps = (dispatch) => ({
  startLogin: (email, password) => dispatch(startLogin(email, password))
});

然后我只使用我的组件中的凭据调用此操作,如果返回了undefined(抛出错误),则会设置错误。

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

我的动作看起来像这样。

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

这样可行,但控制台显示POST 400错误,我想避免。

enter image description here

1 个答案:

答案 0 :(得分:3)

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

1)This HTTP request is how Firebase Authentication verifies the user credentials.因此,库实际上是POST凭证,如果它们不好,那么服务器会以该状态响应。

然后......

2)Your browser decides to log bad requests to the log. Firebase包含了您要处理的错误,但此时浏览器已将其记录到控制台中,这是您无法阻止的。

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