无法从生产中的 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 方法都将在您的域中工作。