获取Firebase电话身份验证OTP时出错

xzabzqsa  于 2023-11-21  发布在  其他
关注(0)|答案(5)|浏览(194)

我正在尝试实现Firebase电话验证。我已经在Firebase控制台上启用了电话验证。我已经生成了密钥库并将SHA签名添加到控制台。
相关性:

dependencies {
    def multidex_version = "2.0.1"
    implementation platform('com.google.firebase:firebase-bom:26.0.0')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.google.firebase:firebase-analytics'
    implementation "androidx.multidex:multidex:$multidex_version"
    implementation 'com.google.firebase:firebase-auth'
    implementation 'com.google.firebase:firebase-core'
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'

}

字符串
电话验证.dart

await FirebaseAuth.instance.verifyPhoneNumber(
                  phoneNumber: '+1234567890',

                  verificationCompleted: (PhoneAuthCredential credential) {
                    print('verificationCompleted');
                    
                  },
                  verificationFailed: (FirebaseAuthException e) {
                    print('verificationFailed');
                    if (e.code == 'invalid-phone-number') {
                      print('The provided phone number is not valid.');
                    }
                    else {
                      print('Some error occoured: $e');
                    }
                  },
                  codeSent: (String verificationId, int resendToken) async {
                    print('codeSent');

                    // Update the UI - wait for the user to enter the SMS code
                    String smsCode = '123456';

                    // Create a PhoneAuthCredential with the code
                    PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(verificationId: verificationId, smsCode: smsCode);
                  
                  },
                  timeout: const Duration(seconds: 60),
                  codeAutoRetrievalTimeout: (String verificationId) {
                    print("Timeout: $verificationId");
                  },
                );


当执行上面的块时,收到以下错误。控制台输出:

E/FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with {
      "error": {
        "code": 400,
        "message": "INVALID_CERT_HASH",
        "errors": [
          {
            "message": "INVALID_CERT_HASH",
            "domain": "global",
            "reason": "invalid"
          }
        ]
      }
    }
     400
V/FA: Recording user engagement, ms: 1165
E/zza: Failed to get reCAPTCHA token - calling backend without app verification

bkhjykvo

bkhjykvo1#

此问题与SHA1和SHA 256密钥有关。您必须添加它们来验证证书。
后藤

  • 项目的Firebase控制台
  • 认证
  • 项目设置(从项目概述附近的设置按钮)
  • 加入指纹
  • 添加密钥库的SHA-1和SHA-256值。

你可以像这样从gradle获得密钥库。
./gradlew signingReport
更多信息请阅读:https://firebase.google.com/docs/auth/android/phone-auth#enable-app-verification

wpx232ag

wpx232ag2#

错误400意味着错误请求,它可能是由于以下三个原因之一:
1.检查firebase控制台中是否启用了电话认证选项。启用它。
1.检查Google cloud console中是否启用了Android设备检查API。启用它。
1.检查SHA-1和SHA-256是否已添加到您的firebase项目中。添加如下:
在firebase控制台中打开你的项目->转到项目设置->点击添加指纹(在页面底部)->在那里添加SHA-1和SHA-256值。
x1c 0d1x的数据
您可以获取Android Studio项目的SHA值,如下所示:
点击右上角的gradle-> task -> android -> signingReport ->运行signingReort

后获取底部的SHA值
如果问题未解决,请遵循文档。

wljmcqd8

wljmcqd83#

在Firebase控制台的身份验证下启用电话选项

nzk0hqpo

nzk0hqpo4#

我在这里呆了一个星期,才发现我使用的一个密钥被限制在另一个应用程序中,因此在我的应用程序中尝试使用它时失败。所以我首先在Android设备验证的凭据选项卡中删除了限制,一切都恢复正常

w51jfk4q

w51jfk4q5#

我们需要在@Anat Bharti中添加一个额外的步骤答案:Enable GCS Device Verification API on Your Project
在您的项目上启用GCS设备验证API。这解决了所有问题,您甚至没有要求在物理设备上验证capcha。

相关问题