firebase - ios 上的 ionic firebase 手机身份验证无需重新验证

标签 firebase ionic4 recaptcha

我有一个 ionic 应用程序,我使用 firebase 电话身份验证,该身份验证使用 recaptcha。它在 android 上运行良好,但在 ios 上抛出错误,提示 recaptcha 只能在 http 环境中运行。我想知道是否有一种方法可以在不使用 recaptcha 的情况下执行 firebase 电话身份验证。

    this.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container',{
      'size': 'invisible'
    });


              let appVerifier = this.recaptchaVerifier;
              this.appService.sendPhoneVerification(phoneNumber,appVerifier) 
              .then(confirmationResult => {
                   //do something
                })

Ios 抛出错误“RECAPTCHA 只能在 HTTP/HTTPS 环境中运行”

最佳答案

这就是我解决问题“'RECAPTCHA 只能在 HTTP/HTTPS 环境中运行'”的方法。

  1. 安装 Firebase 插件:plugin link
  2. 将其添加到您的 app.module.ts 中。
  3. 进行平台检查:检查是否为 iOS。

    if (this.plt.is('ios')) { //这里是ios代码 } 别的 { //这里是安卓 }

  4. 现在添加以下代码(iOS 平台),向用户发送验证码短信以验证电话号码。将插件注入(inject)到构造函数中。创建一个变量来分配 Promise 中的数据。电话号码应为国家代码+电话号码。例如“+19999999999”

    公共(public)signInUser(phoneNum) { this.firebase.verifyPhoneNumber(phoneNum).then((vdata) => { this.refConfirm = vdata; //您可以将该人重定向到验证页面或向其显示警报 输入验证码。 }); }

  5. 现在创建一个 token ,以使用 Firebase 使用凭据验证和登录用户。

    公共(public) verifyPhoneNumber(电话号码) { 让 tokenPhone = firebase.auth.PhoneAuthProvider.credential(this.refConfirm, 电话号码); firebase.auth().signInWithCredential(tokenPhone).then((verifiedData) => { //无论您想在这里做什么或将用户重定向到主页。 }); }

  6. 在 Firebase 上生成 GoogleService.plist 并添加到您的项目根目录 enter image description here

  7. 您必须添加反向客户端 ID,而不是正常客户端 ID。

    enter image description here

  8. 我就是这样解决的。

关于firebase - ios 上的 ionic firebase 手机身份验证无需重新验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015117/

相关文章:

javascript - 实现相机插件后无法再打开相机页面

python - 如何在没有提交按钮的情况下提交谷歌验证码?

php - 安装 reCaptcha v2 复选框后仍然收到垃圾邮件

ios - 如何以编程方式(iOS)创建Firebase动态链接?

angular - 如何在返回 onSnapshot 结果的服务中创建一个方法,然后在我的组件或 Ionic 页面中使用它?

angular - 如何检测 ionic 4的 ion-content 成分中的涡旋到达终点?

javascript - reCAPTCHA 自定义表单参数名称

ios - 使用 Firebase 实时数据库发送聊天应用程序构建的推送通知

firebase - 在Cloud Firestore中更新用户数据

angular - TypeError : val. set is not a function (JS Map())