【问题标题】:Flutter Firebase Phone Authentication error on AndroidAndroid上的Flutter Firebase电话身份验证错误
【发布时间】:2021-03-16 08:39:47
【问题描述】:

我想用 Firebase Auth 验证电话号码,但它给出了以下错误,

注意事项: 我的 sha1 和 sha256 密钥已附加。 当我手动将电话号码添加到 Firebase 时,它​​可以工作。 在 iOS 设备上流畅运行。

[GetAuthDomainTask] 获取项目配置时出错。

{
"error":{
  "code":400,
  "message":"INVALID_CERT_HASH",
  "errors":[
     {
        "message":"INVALID_CERT_HASH",
        "domain":"global",
        "reason":"invalid"
     }
  ]
}
}

输出:

I/chatty  (10469): uid=10134(com.xxx.xxx) identical 1 line
W/xxx.xxx(10469): Accessing hidden method Lsun/misc/Unsafe;- 
>putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/System  (10469): Ignoring header X-Firebase-Locale because its value 
was null.
D/EGL_emulation(10469): eglMakeCurrent: 0x7a08b7442b80: ver 3 0 (tinfo 
0x7a08b7299680)
E/FirebaseAuth(10469): [GetAuthDomainTask] Error getting project 
config. Failed with {
E/FirebaseAuth(10469):   "error": {
E/FirebaseAuth(10469):     "code": 400,
E/FirebaseAuth(10469):     "message": "INVALID_CERT_HASH",
E/FirebaseAuth(10469):     "errors": [
E/FirebaseAuth(10469):       {
E/FirebaseAuth(10469):         "message": "INVALID_CERT_HASH",
E/FirebaseAuth(10469):         "domain": "global",
E/FirebaseAuth(10469):         "reason": "invalid"
E/FirebaseAuth(10469):       }
E/FirebaseAuth(10469):     ]
E/FirebaseAuth(10469):   }
E/FirebaseAuth(10469): }
E/FirebaseAuth(10469):  400
E/zzf     (10469): Failed to get reCAPTCHA token - calling backend 
without app verification
D/EGL_emulation(10469): eglMakeCurrent: 0x7a08b7442b80: ver 3 0 (tinfo 
0x7a08b7299680)
W/System  (10469): Ignoring header X-Firebase-Locale because its value 
was null.
E/FirebaseAuth(10469): [SmsRetrieverHelper] SMS verification code 
request failed: unknown status code: 17093 null
I/flutter (10469): exception
I/flutter (10469): [firebase_auth/missing-client-identifier] This 
request is missing a valid app identifier, meaning that neither 
SafetyNet checks nor reCAPTCHA checks succeeded. Please try again, or 
check the logcat for more details.
W/GoogleApiManager(10469): com.google.android.gms.internal.auth-api- 
phone.zzv could not execute call because it requires feature 
(sms_retrieve, 1).
W/GoogleApiAvailability(10469): GMS core API Availability. 
ConnectionResult=2, tag=null
W/GoogleApiAvailability(10469): java.lang.IllegalArgumentException

【问题讨论】:

    标签: android firebase flutter firebase-authentication


    【解决方案1】:

    检查 app/build.gradle 是否包含以下调试和发布代码

    signingConfigs {
       debug {
           keyAlias keystoreDevProperties['keyAlias']
           keyPassword keystoreDevProperties['keyPassword']
           storeFile keystoreDevProperties['storeFile'] ? file(keystoreDevProperties['storeFile']) : null
           storePassword keystoreDevProperties['storePassword']
       }
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
    }
    
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
            minifyEnabled true
            shrinkResources true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    

    【讨论】:

    【解决方案2】:

    @Ufuk Zimmerman 可能android>task>signReport 创建的证书可以为您调试,但是当您创建签名的.apk 时,您需要使用密钥库 (.jks) 文件,并且您需要通过我认为相同的密钥库创建 SHA这是使用命令获取 SHA 的最佳方式。

    keytool -list -v -keystore {keystore_name_with_complete_path} -alias {alias_name}

    例子

    keytool -list -v -keystore C:\Users\name\Desktop\test.jks -alias test

    【讨论】:

      【解决方案3】:

      我有同样的错误,因为我通过 vscode 终端生成了我的 sha1 证书,如果你想要电话身份验证,这很糟糕。 所以我修复了

      1. 通过android studio打开我的android文件夹
      2. 点击.android/app/build.gradle
      3. 选择android studio左侧的gradle view
      4. 选择android>task>signReport
      5. 等待一段时间,你会得到真正的沙!证书
      6. 那里有复制和过去的 firebase 项目。

      如果这些不起作用,请检查

      1. 如果您从 Firebase 身份验证启用手机身份验证
      2. 然后启用android deviceCheck Api

      【讨论】:

      • 我的 sha1 和 sha256 密钥已附加。
      • 你是从android studio得到的吗?如果不是,你只需要得到它!安卓工作室
      • 启用 android deviceCheck Api 帮助。谢谢。
      【解决方案4】:

      将以下依赖项添加到您的 build.gradle 文件中

      实现'androidx.browser:browser:1.3.0'

      【讨论】:

        猜你喜欢
        • 2021-06-10
        • 2021-06-16
        • 2020-01-24
        • 1970-01-01
        • 2021-02-12
        • 2018-01-19
        • 2018-02-21
        • 2019-08-05
        • 2020-01-23
        相关资源
        最近更新 更多