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

问题描述 投票:0回答:2

在使用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 ');
    }
  }

这是在控制台上显示的内容:

请在这里建议我做错了,因为我不希望HTTP控制台消息打印到控制台显示我的API_KEY。

同样here is a git issue

angular firebase error-handling http-post firebase-authentication
2个回答
0
投票

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

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


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调用被触发并返回到您的应用程序!

© www.soinside.com 2019 - 2024. All rights reserved.