使用带有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 POST消息打印到显示我的API_KEY的控制台。
答案 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调用已被触发&回到你的应用程序!