Cordova ionic 3 android app 实现没有验证码/ReCaptcha 的电话验证

Posted

技术标签:

【中文标题】Cordova ionic 3 android app 实现没有验证码/ReCaptcha 的电话验证【英文标题】:Cordova ionic 3 android app Implement Phone auth without Captcha/ReCaptcha 【发布时间】:2021-11-06 10:19:07 【问题描述】:

我已经安装了 /cordova-plugin-firebase 发送验证电话号码 我的问题是在收到带有 OTP 代码的短信之前,我的应用程序正在后台运行,并且打开了一个 chrome 页面并链接到我的 firebase 帐户并验证“我不是机器人”......大约 5 秒后它关闭并且我的应用程序再次出现在前台并且我收到一条包含 OTP 代码的短信。 那么,在后台打开网页时,是否可以让我的 android 应用程序在前台运行。 我不想在等待短信时受到任何干扰。 请有任何帮助! 这是我的代码

window.FirebasePlugin.verifyPhoneNumber("my phone number", timeOutDuration, function(credential) 
    console.log(credential);


    firebase.auth().signInWithCredential(signInCredential);
, function(error) 
    console.error(error);
);

这是我的安卓日志 D/CordovaActivity:暂停活动。

V/FA:记录用户参与度,毫秒:41634 V/FA:连接到远程 服务 W/ActivityThread:handleWindowVisibility:没有活动 token android.os.BinderProxy@cbf1c1a D/libMEOW: 应用了 1 个插件 [com.ess.ess]: 插件 1:[libMEOW_gift.so]:V/FA:活动暂停,时间:610839869 V/FA:连接尝试已在进行中 V/FA: onActivityCreated V/FA:活动恢复,时间:610839913 V/FA: 连接尝试已在进行中 V/FA:连接尝试 已经在进行中 W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I(灰名单,链接, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (灰名单、链接、允许) 访问隐藏方法 Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (灰名单、核心平台 API、链接、允许)W/syndic.essyndi: 访问隐藏方法 Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (灰名单、链接、允许) W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V(灰名单,链接, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, 允许)W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I(灰名单,链接, 允许)W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->allocateInstance(Ljava/lang/Class;)Ljava/lang/Object; (灰名单、链接、允许) W/syndic.essyndi:访问隐藏方法 Llibcore/io/Memory;->pokeByte(JB)V(灰名单,反射,允许) 访问隐藏方法 Llibcore/io/Memory;->peekByte(J)B(灰名单,反射,允许) 访问隐藏方法 Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (灰名单、核心平台 API、链接、允许) 访问隐藏方法 Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (灰名单、链接、允许) 访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (灰名单、核心平台 API、反射、允许) 访问隐藏方法 Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (灰名单,反射, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, 反射,允许) 访问隐藏方法 Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (灰名单、核心平台 API、反射、允许) 访问隐藏方法 Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, 反射,允许)W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (灰名单,反射,允许) 访问隐藏方法 Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (灰名单,反射,允许) W/syndic.essyndi:访问隐藏 方法 Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, 链接,允许)W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed) I/zzdu: keyset not found, 将生成一个 新的一个 java.io.FileNotFoundException:无法读取密钥集;首选项值 GenericIdpKeyset 不存在 在 com.google.android.gms.internal.firebase-auth-api.zzdy.zzc(com.google.firebase:firebase-auth@@21.0.1:10) 在 com.google.android.gms.internal.firebase-auth-api.zzdy.zza(com.google.firebase:firebase-auth@@21.0.1:1) 在 com.google.android.gms.internal.firebase-auth-api.zzaw.zzi(com.google.firebase:firebase-auth@@21.0.1:1) 在 com.google.android.gms.internal.firebase-auth-api.zzdt.zzi(com.google.firebase:firebase-auth@@21.0.1:1) 在 com.google.android.gms.internal.firebase-auth-api.zzdt.zzg(com.google.firebase:firebase-auth@@21.0.1:2) 在 com.google.firebase.auth.internal.zzk.(com.google.firebase:firebase-auth@@21.0.1:7) 在 com.google.firebase.auth.internal.zzk.zza(com.google.firebase:firebase-auth@@21.0.1:3) 在 com.google.firebase.auth.internal.RecaptchaActivity.zzb(com.google.firebase:firebase-auth@@21.0.1:9) 在 com.google.android.gms.internal.firebase-auth-api.zztr.(com.google.firebase:firebase-auth@@21.0.1:13) 在 com.google.firebase.auth.internal.RecaptchaActivity.onResume(com.google.firebase:firebase-auth@@21.0.1:43) 在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1453) 在 android.app.Activity.performResume(Activity.java:7942) 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:4384) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4429) 在 android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) 在 android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:181) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:98) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2126) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:264) 在 android.app.ActivityThread.main(ActivityThread.java:7684) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980) W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V(灰名单,链接, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (灰名单、链接、允许) I/zzkp:Provider GmsCore_OpenSSL not 可用 W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (灰名单、链接、允许) W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V(灰名单,链接, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (灰名单、链接、允许) W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V(灰名单,链接, 允许)W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V(灰名单,链接, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (灰名单、链接、允许) W/syndic.essyndi:访问隐藏方法 Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V(灰名单,链接, 允许) 访问隐藏方法 Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (灰名单、链接、允许) V/PhoneWindow: DecorView setVisiblity: 可见性 = 4,父级 = null,这 = DecorView@b238ff6[] D/ViewRootImpl[RecaptchaActivity]: 硬件加速 = true , fakeHwAccelerated = 假,sRendererDisabled = 假, forceHwAccelerated = 假,sSystemRendererDisabled = 假 I/InputTransport:创建 ARC 句柄:0x72a0bb2d20 V/PhoneWindow: DecorView setVisiblity:可见性 = 0,父级 = android.view.ViewRootImpl@fff98cd,这个= DecorView@b238ff6[RecaptchaActivity] 带系统:忽略标头 X-Firebase-Locale,因为它的值为 null。 I/系统输出: [okhttp]:检查权限开始! [okhttp]:不是彩信! [okhttp]:不是电子邮件! I/System.out: [OkHttp] 发送请求>> [OkHttp] sendRequest

【问题讨论】:

【参考方案1】:

对于遇到同样问题的任何人。解决方案是为您的项目启用 Android DeviceCheck API 并在您的 Firebase settings.firebase 中添加 SHA 256

【讨论】:

以上是关于Cordova ionic 3 android app 实现没有验证码/ReCaptcha 的电话验证的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 3 cordova 遇到设备/模拟器错误 [Android]

Ionic 3:更新到 cordova-android 9 后无法从驱动器中选择文件

sh 在Ionic 3中更新cordova-android

使用 ionic-v3 和 cordova 6.3.0 警告 Android API 级别 28

Ionic 3 cordova运行错误

IONIC 3 [ERROR] 运行 cordova run android 时发生错误(退出代码 1)