当前位置: 首页 > 知识库问答 >
问题:

Firebase phone身份验证错误:无效令牌。在nativeToJSError

西门高歌
2023-03-14

我使用firebase电话身份验证在react native应用程序中使用这个文档,我在一些不同的设备中测试了它。有时电话auth可以工作,但有时会抛出此错误

firebase phone身份验证错误:无效令牌。在nativeToJSError

我已经浏览了firebase的文档,并试图理解这个错误。下面是我的代码片段:

js prettyprint-override">confirmPhone = async(phoneNumber) => {
  const phoneWithAreaCode = phoneNumber.replace(/^0+/, '+972');
  return new Promise((res, rej) => {
    firebase.auth().verifyPhoneNumber(phoneWithAreaCode)
      .on('state_changed', async(phoneAuthSnapshot) => {
        switch (phoneAuthSnapshot.state) {
          case firebase.auth.PhoneAuthState.AUTO_VERIFIED:
            UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
            await this.confirmCode(phoneAuthSnapshot.verificationId, phoneAuthSnapshot.code, phoneAuthSnapshot)
            res(phoneAuthSnapshot)

            break

          case firebase.auth.PhoneAuthState.CODE_SENT:
            UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
            res(phoneAuthSnapshot)
            break

          case firebase.auth.PhoneAuthState.AUTO_VERIFY_TIMEOUT:
            UserStore.setVerificationId(phoneAuthSnapshot.verificationId)
            UserStore.setErrorCodeAuthentication('SMS code has expired')
            res(phoneAuthSnapshot)


          case firebase.auth.PhoneAuthState.ERROR:
            console.log(phoneAuthSnapshot.error.code)
            if (phoneAuthSnapshot.error) {
              this.showMessageErrorByCode(phoneAuthSnapshot.error.code)

            }

            rej(phoneAuthSnapshot)
            break

        }
      })
  })
}

confirmCode = async(verificationId, code, phoneAuthSnapshot) => {
  console.log(verificationId, code);
  try {
    const credential = await firebase.auth.PhoneAuthProvider.credential(verificationId, code)
    UserStore.setCodeInput(code)
    UserStore.setUserCredentials(credential)
    AppStore.setAlreadyVerifiedAuto(true)
    await this.authenticate(credential)
    return credential
  } catch (e) {
    console.log(e)
    this.showMessageErrorByCode(e.error.code)


    //    throw new Error(e)
  }
}

showMessageErrorByCode(errorcode) {
  switch (errorcode) {
    case 'auth/invalid-phone-number':
      UserStore.setErrorCodeAuthentication('Please enter valid phone number');
      break;
    case 'auth/unknown':
      {
        UserStore.setErrorCodeAuthentication('User blocked by firebase');
        break;
      }

    case 'auth/session-expired':
      {
        UserStore.setErrorCodeAuthentication('SMS code has expired');
        break;
      }
    case 'auth/invalid-verification-code':
      {
        UserStore.setErrorCodeAuthentication('Code verification not correct');
        break;
      }
    default:
      UserStore.setErrorCodeAuthentication('other error');

  }
}

authenticate = async(credential) => {
  await firebase.auth().signInAndRetrieveDataWithCredential(credential)

}

//...

共有1个答案

计均
2023-03-14

检查以下内容:

  • 正确的包ID
  • 更正google-info.plist
  • 更正aps-environment值
  • 上载APNS身份验证密钥(p8)而不是证书

希望你觉得有帮助。

 类似资料:
  • 我有一个LaravelAPI(实际上是LumenAPI)服务于VueJS前端。Vue应用程序允许用户登录到谷歌。然后将Google令牌发送回Lumen API,后者使用Google验证令牌,然后验证电子邮件地址是否为有效用户。然后它生成一个令牌,与用户一起存储在数据库中,并返回用户对象。 我没有使用Passport或jwt auth之类的东西。那么现在,我如何使用默认的Auth中间件来验证(现在已

  • null null “AADSTS28000:为输入参数scope提供的值无效,因为它包含多个资源。scope api://{API-application-id}/a-scope https://graph.microsoft.com/user。Read openid配置文件无效。” 这里,我们的后端是一个资源,它有一个作用域,“https://graph.microsoft.com”是另一个作

  • 我刚刚开始在.NET中开发我的第一个REST API。由于它将是无状态的,我将使用令牌进行身份验证: 基本思想(System.Security.Cryptography): null 检查凭据是否有效(用户名,将哈希密码与db值进行比较) 如果为真,则加密数据对象 对生成的令牌使用HMAC,并将其存储到数据库 将令牌(不带HMAC)返回给用户(cookie/字符串) 对需要身份验证的方法的请求:

  • 我正在尝试在Dropwizard web应用程序中实现OAuth2身份验证。我已经创建了所需的<code>验证器 我所需的行为是,在我的客户端通过在我的登录页面上提供他/她的凭据登录后,我想将客户端重定向到我使用Dropwizard Views创建的问候语页面,并且路径为“/me”,如下所示: 我的问候资源如下所示: 目前,我得到一个“访问此资源需要凭据。”登录后的响应。在阅读了一些关于令牌认证的

  • 在传统的基于cookie/JSESSION的身份验证的同时,是否可以使用基于令牌的(无状态)身份验证? 应用程序已经有一个现有的Spring MVC+Thymeleaf实现,用作管理/超级用户门户。当你登录时,你会得到一个JessionID。我们需要使用Jersey(JAX-RS)创建一个RESTful API以供客户端使用。要求是无状态的。本质上,我们仍然需要Spring MVC+Thymele