无法从生产中的 firebase 接收 phone 身份验证短信
Not able to receive phone authentication sms from firebase in production
我正在使用 firebase phone 身份验证在我的 React+Node 应用程序中使用手机号码登录用户。在本地主机上一切正常,正在发送带有验证码的短信,用户可以登录。
但是当我部署应用程序时,它不再工作了。当输入手机号码并完成验证码时,它只是重新加载验证码,我必须再次完成它并且它永远不会发送短信。
我的控制台出现这个错误:
POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/sendVerificationCode?key=myFirebaseAPIkey 400
这只发生在生产中。我不确定为什么会这样。我的主机是否会阻止 firebase 用于发送短信的某些端口?或者我这边有问题。
这是我的登录方法:
loginWithPhone = () => {
this.setState({ showOnlyCaptcha: true }, () => {
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier(
"recaptcha-container"
);
var phoneNumber = "+91" + this.state.loginWithMobile;
var appVerifier = window.recaptchaVerifier;
firebase
.auth()
.signInWithPhoneNumber(phoneNumber, appVerifier)
.then((confirmationResult) => {
// SMS sent. Prompt user to type the code from the message, then sign the
// user in with confirmationResult.confirm(code).
window.confirmationResult = confirmationResult;
})
.catch(function (error) {
// Error; SMS not sent
if (error.code === "auth/too-many-requests") {
this.setState(
{
loginWithPhoneErrorMessage:
"Unable to verify Captcha at this time. Please try again after some time.",
},
() => {
this.setState({ loginWithPhoneError: true });
}
);
}
});
});
};
经过一番研究,我明白了。
为了能够在生产中进行身份验证,您需要将您的域添加到 firebase 项目授权域列表中。之后,所有 sign-in 方法都将在您的域中工作。
我正在使用 firebase phone 身份验证在我的 React+Node 应用程序中使用手机号码登录用户。在本地主机上一切正常,正在发送带有验证码的短信,用户可以登录。
但是当我部署应用程序时,它不再工作了。当输入手机号码并完成验证码时,它只是重新加载验证码,我必须再次完成它并且它永远不会发送短信。
我的控制台出现这个错误:
POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/sendVerificationCode?key=myFirebaseAPIkey 400
这只发生在生产中。我不确定为什么会这样。我的主机是否会阻止 firebase 用于发送短信的某些端口?或者我这边有问题。
这是我的登录方法:
loginWithPhone = () => {
this.setState({ showOnlyCaptcha: true }, () => {
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier(
"recaptcha-container"
);
var phoneNumber = "+91" + this.state.loginWithMobile;
var appVerifier = window.recaptchaVerifier;
firebase
.auth()
.signInWithPhoneNumber(phoneNumber, appVerifier)
.then((confirmationResult) => {
// SMS sent. Prompt user to type the code from the message, then sign the
// user in with confirmationResult.confirm(code).
window.confirmationResult = confirmationResult;
})
.catch(function (error) {
// Error; SMS not sent
if (error.code === "auth/too-many-requests") {
this.setState(
{
loginWithPhoneErrorMessage:
"Unable to verify Captcha at this time. Please try again after some time.",
},
() => {
this.setState({ loginWithPhoneError: true });
}
);
}
});
});
};
经过一番研究,我明白了。 为了能够在生产中进行身份验证,您需要将您的域添加到 firebase 项目授权域列表中。之后,所有 sign-in 方法都将在您的域中工作。