Firebase createUserWithEmailAndPassword()返回HTTP POST错误以及错误对象

时间:2018-03-04 15:20:15

标签: angular firebase error-handling http-post firebase-authentication

使用带有firebase的Angular5作为数据库时,我尝试从createUserWithEmailAndPassword(email, password)创建新用户。

但是当我输入已经存在的电子邮件(用于测试)时,该函数将返回HTTP POST错误(不是预期的)与错误对象(预期)。

我尝试使用.catch()捕获错误,但HTTP POST错误仍然使用我的API密钥打印到控制台以及firebase URL。

这是我在AuthService typescript类中的代码:

  signupUser(username: string, password: string) {
    firebase.auth().createUserWithEmailAndPassword(username, password)
      .catch(function(err) {
        const errorCode = err.code;
        const errorMsg = err.message;
        console.log('Error code: ', errorCode);
        console.log('Error Message: ', errorMsg);
        console.log('Error: ', err);
      });
  }

以下是调用上述代码的地方:

  onSignup(form: NgForm) {
    const username: string = form.value.username;
    const password: string = form.value.password;
    try {
      this.authService.signupUser(username, password);
    } catch (err) {
      console.log('try-catch called ');
    }
  }

以下是控制台上显示的内容:

See this

请告知我在这里做错了什么,因为我不希望将HTTP POST消息打印到显示我的API_KEY的控制台。

同样here is a git issue

2 个答案:

答案 0 :(得分:0)

Firebase身份验证SDK通过HTTP请求与其后端进行通信。您的浏览器的JavaScript控制台只显示Firebase身份验证服务器发送回客户端的HTTP响应代码。

无法通过API禁止此消息。如果您不想看到这一点,可以尝试在JavaScript控制台中关闭错误日志记录。

答案 1 :(得分:0)

在调用createUserAndRetrieveDataWithEmailAndPassword()之后,您需要一个if语句(或者如果您想要捕获多个内容的情况)。 如果是stmt,请检查返回的错误代码是否匹配" auth / email-already-in-use "然后将错误消息重置为您想要的消息并将其显示给您的用户。

    firebase.auth().createUserAndRetrieveDataWithEmailAndPassword(
  email, password).catch(function(error) {
      // Handle Errors here.
      var errorCode = error.code;
      var errorMessage = error.message;
      if (errorCode == 'auth/email-already-in-use') {
        console.log('auth/email-already-in-use.');
      } else {
        console.log(errorMessage);
      }
      console.log(error);
    });

请参阅此方法的文档和返回的错误代码:  https://firebase.google.com/docs/reference/js/firebase.auth.Auth#createUserWithEmailAndPassword

另请注意,如果您的目标是隐藏API密钥,那么任何拥有http过滤器的人都可以在处理错误后观察它,因为对firebase的http调用已被触发&回到你的应用程序!