Firebase 手机身份验证仅在发布模式下不启动 OTP,但即使在为发布模式添加 sha1 后也可以在调试模式下工作

Posted

技术标签:

【中文标题】Firebase 手机身份验证仅在发布模式下不启动 OTP,但即使在为发布模式添加 sha1 后也可以在调试模式下工作【英文标题】:Firebase phone auth not initiating OTP only in release mode but works on Debug mode even after added sha1 for release mode 【发布时间】:2020-12-17 21:54:51 【问题描述】:

我如何实施的步骤。

按照建议,我一路实施。在调试模式下非常好。不幸的是,即使我在 firebase 控制台中添加了调试和发布 sha1 键,它也无法在发布模式下工作。

Step 1. 编码部分在这里

final PhoneVerificationCompleted verificationCompleted =
    (PhoneAuthCredential user) 
  successMessage('Your phone number verified successfully!');
  _loginNotifier.validate();
;

 final PhoneVerificationFailed verificationFailed = (FirebaseAuthException authException) 
  errorMessage('Phone number verification failed. Code: $authException.code. Message: $authException.message');
  print(
      'Phone number verification failed. Code: $authException.code. Message: $authException.message');
;

 final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
    (String verificationId) 
  this._verificationId = verificationId;
  print("time out");
;

 firebaseAuth = FirebaseAuth.instance;
firebaseAuth.verifyPhoneNumber(
    phoneNumber: '+$_phoneWithCC',
    timeout: const Duration(seconds: 60),
    verificationCompleted: verificationCompleted,
    verificationFailed: verificationFailed,
    codeSent: codeSent,
    codeAutoRetrievalTimeout: codeAutoRetrievalTimeout);

第 2 步:

添加了所有三个不同的 sha1 密钥,但仍然无法正常工作:(

我遇到的错误:

正如我所说,在调试模式下一切正常 但是在release模式下,启动otp函数后,立即PhineVerificationFailed with null message and null code。

如果还有什么我错过的,请指教。谢谢大家

【问题讨论】:

那么你可以在添加 sha1 后尝试下载新的 google-services.json 并用旧的替换它吗? 是的@KrishBhanushali 我做到了.. 如此连线:( 在发布模式下,我立即被调用验证失败函数。我的错,verificationFailed 函数的数据为 null :( keytool -list -v -keystore PATH_JKS_FILE -alias XXX 这就是我获得发布 SHA1 密钥的方式 -FYI @MuthuS 您是否在清单文件中添加了 Internet 权限?这解决了我在发布模式下的问题。 【参考方案1】:

除了SHA1 - 你还需要SHA256 指纹来发布apk。 我在 firebase google 身份验证方面遇到了类似的问题。 您可以将SHA256 指纹添加到firebase 项目控制台并重试吗?

【讨论】:

ok lemme try, between, 为什么失败的消息和代码为空?我的实现是否正确? ibb.co/rvZPgtK 添加 sha-256 发布和调试密钥然后下载 json 文件并重建应用程序然后我得到相同的错误:( 之间,如何获取 SHA1 的发布模式.. keytool -list -v -keystore PATH_JKS_FILE -alias XXX 是否正确? @abijith 在你的 android 文件夹中打开 cmd,然后运行以下命令 - ./gradlew signingReport 链接 - ***.com/questions/51845559/…【参考方案2】:

添加 SHA1 后,您必须从 Google Play 重新安装您的应用。

【讨论】:

我也没有发布。我正在尝试直接安装发布 apk。不是从游戏商店。仅供参考@随机先生【参考方案3】:

除了添加sha256SHA1,您还需要在Firebase 控制台中添加您的电子邮件。见附图。

【讨论】:

以上是关于Firebase 手机身份验证仅在发布模式下不启动 OTP,但即使在为发布模式添加 sha1 后也可以在调试模式下工作的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 电话身份验证在 APK 发布模式下不起作用

Firebase仅在某些设备上进行身份验证?

Firebase 手机身份验证 - 应用验证(SafetyNet)

firebase 身份验证(访问被拒绝)“生成发布签名的 APK”

由于 Firebase 手机身份验证,App Store 被拒绝

在 Android 支持库到 27.0.2 之后,Xamarin 应用程序仅在发布模式下不起作用