Firebase 电话身份验证验证 ID 从未设置。 (颤振iOS)

Posted

技术标签:

【中文标题】Firebase 电话身份验证验证 ID 从未设置。 (颤振iOS)【英文标题】:Firebase Phone Auth verificationId never being set. (Flutter iOS) 【发布时间】:2020-04-19 13:17:57 【问题描述】:

好的,希望是快速的问题,但由于某种原因,在我当前的项目中,从 firebase_auth 实际创建和设置我的 verifyId 的调用似乎从未被调用过。

涉及代码片段。

final PhoneCodeSent smsCodeSent = (String verID, [int forceCodeResent]) async 
   this.verificationId = verID;
   print('Setting verificationId');
;

print('Creating Verification Code for: ' + this.phoneNumber);
await _auth.verifyPhoneNumber(
  phoneNumber: this.phoneNumber, 
  codeAutoRetrievalTimeout: timeout,
  codeSent: smsCodeSent,
  timeout: const Duration(seconds: 20),
  verificationCompleted: verificationComplete,
  verificationFailed: verificationFailed,
);

print(this.verificationId);


我确实看到了电话号码的打印(无论用户输入什么电话号码),但输出日志只显示:

flutter:为:5555555555 创建验证码 颤振:空

意味着永远不会调用 smsCodeSent 函数。任何想法为什么?

(Flutter Doctor 后续结果)

[✓] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, 语言环境 en-CA) • Flutter 版本 1.12.13+hotfix.5 位于 /Users/iosdev/Developer/flutter • 框架修订27321ebbad(3周前),2019-12-10 18:15:01 -0800 • 引擎版本 2994f7e1e6 • Dart 版本 2.7.0

[✓] android 工具链 - 为 Android 设备开发(Android SDK 版本 29.0.2) • Android SDK 位于 /Users/iosdev/Library/Android/sdk • 未配置 Android NDK 位置(可选;对本机分析有用 支持) • 平台 android-29,构建工具 29.0.2 • Java 二进制文件位于:/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java • Java 版本 OpenJDK 运行时环境(构建 1.8.0_202-release-1483-b49-5587405) • 接受所有 Android 许可证。

[✓] Xcode - 为 iOS 和 macOS 开发 (Xcode 10.2.1) • Xcode 位于 /applications/Xcode.app/Contents/Developer • Xcode 10.2.1,内部版本 10E1001 • CocoaPods 1.8.4 版

[✓] Android Studio(版本 3.5) • Android Studio 位于 /Applications/Android Studio.app/Contents • Flutter 插件版本 42.1.1 • Dart 插件版本 191.8593 • Java 版本 OpenJDK 运行时环境(构建 1.8.0_202-release-1483-b49-5587405)

[✓] VS 代码(版本 1.41.1) • /Applications/Visual Studio Code.app/Contents 中的 VS 代码 • Flutter 扩展版本 3.7.1

[✓] 已连接设备(1 个可用) • iPhone Xʀ • E901CA1F-553F-41E6-864D-57E151B3F39F • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-2(模拟器)

【问题讨论】:

你试过用真实的电话号码代替 5555555 吗? 还没有,主要是因为这是一个iOS应用,我还没有苹果设备来测试它。不过,它在我要尝试的事情清单上,谢谢! 您不需要苹果设备,只需要一个有效的电话号码。代码被发送到给定的电话号码,反之亦然。 没错,从来没有想过...试过了,它肯定不会发送文本...所以至少我们知道这一点。我必须验证这是否是我设置的 firebase 控制台或其他问题。至少在某个地方可以看到,虽然我完全不确定它会解决问题,但我仍然感谢你的想法。 更新:在过去 3 天的工作后,设法摆脱了错误代码。 403 错误。 “来自此 iOS 客户端应用程序 的请求被阻止。”这意味着应用程序无法识别我输入的 Bunle ID,或者没有将其传输到服务器。 (为了记录,我确实有一个 BundeID 并且它是正确的,我一发现它就检查了第一件事,哈哈。) 【参考方案1】:

好吧,我找到了解决问题的方法。显然,iOS 存在一个问题,它拒绝将模拟器视为真实设备,因此无法正确遵循使用 firebase 的实际身份验证流程。

因此,对于遇到类似问题的任何人,请确保您在实际设备上进行 firebase_auth 测试。

【讨论】:

以上是关于Firebase 电话身份验证验证 ID 从未设置。 (颤振iOS)的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 电话号码身份验证错误

Firebase 电话身份验证 OTP 消息模板问题

我已经在 firebase 项目设置调试以及 playconsole 上添加了指纹,但是电话身份验证不起作用如何解决这个问题?

如何从 Firebase 身份验证中获取用户 ID

使用firebase电话身份验证验证失败

使用 Firebase 和 Flutter 通过 OTP 验证电话号码