繁体   English   中英

Android FirebaseUI 使用 Google 登录时释放密钥错误

[英]Android FirebaseUI sign in with Google error for release key

在使用 FirebaseUI 的身份验证时尝试使用 Google Sign-in 登录时出现Developer (Code:10, message:10:)错误。 一切都在开发中运行良好,但是当我使用我的上传密钥签署我的包然后在设备上运行它时,它失败了。

我在此处此处此处查看了相关问题,但答案没有帮助。 正如您将在下面看到的,我已经尝试了他们的建议。

我试过的:

  • 将 SHA1 指纹添加到 Firebase 控制台的项目设置中,用于调试、发布(上传)和 Google Play 密钥。
  • 在 console.developers.google.com 中,为 3 个密钥中的每一个为 Android 创建了 OAuth 客户端。
  • Still at console.developers.google.com created a new Web client which I then took the Client ID and secret and put it under Firebase's authentication / Google sign in method's Web SDK configuration.
  • 这里这里这里这里尝试了所有步骤
  • 仔细检查我的构建实际上是由正确的密钥(上传/部署密钥)签名的
  • 确保我的 google-services.json 是最新的,所有指纹都存在

我的应用级 build.gradle 文件包含以下内容:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'

android {

  signingConfigs {
    release {
      storeFile file('myKeystore')
      storePassword 'myPassword'
      keyAlias 'upload'
      keyPassword 'myPassword'
    }
  }
  compileSdkVersion 29

  defaultConfig {
    applicationId "com.######.app"
    minSdkVersion 28
    targetSdkVersion 29
    versionCode 24
    versionName "Test version 1"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    javaCompileOptions {
      annotationProcessorOptions {
        arguments = ["room.schemaLocation":
          "$projectDir/schemas".toString()
        ]
      }
    }
  }

  buildTypes {

    release {
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      signingConfig signingConfigs.release
    }

    debug {
      debuggable true
      signingConfig signingConfigs.debug
    }
  }

  packagingOptions {
    exclude 'META-INF/atomicfu.kotlin_module'
  }
  sourceSets {
    main {
      res {
        srcDirs 'src/main/res', 'src/main/res_birds'
      }
    }
  }
}

dependencies {
    // Jar libs
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // Kotlin
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // Support libs
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0'

    // Supernova UI Toolkit
    implementation 'io.supernova:android-ui-toolkit:1.2.0'

    // Play Services
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    implementation 'com.google.android.gms:play-services-auth:18.0.0'

    // Page Control
    implementation 'com.romandanylyk:pageindicatorview:1.0.0'

    // Unit tests dependencies
    implementation 'com.google.firebase:firebase-auth:19.3.1'
    testImplementation 'junit:junit:4.13'

    // Integration tests dependencies
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    // Room components
    implementation "androidx.room:room-runtime:$rootProject.roomVersion"
    kapt "androidx.room:room-compiler:$rootProject.roomVersion"
    androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation "androidx.room:room-ktx:$rootProject.roomVersion"

    // Lifecycle components
    kapt "androidx.lifecycle:lifecycle-compiler:$rootProject.archLifecycleVersion"
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$rootProject.archLifecycleVersion"

    // Kotlin components
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.coroutines"
    api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines"

    // Material design
    implementation "com.google.android.material:material:$rootProject.materialVersion"

    // Testing
    testImplementation 'junit:junit:4.13'
    androidTestImplementation "androidx.arch.core:core-testing:$rootProject.coreTestingVersion"

    // Navigation
    implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2'
    implementation 'androidx.navigation:navigation-ui-ktx:2.2.2'

    // Stfalcon ImageViewer
    implementation 'com.github.stfalcon:stfalcon-imageviewer:1.0.1'

    // [START gradle_firebase_ui_auth]
    implementation "com.firebaseui:firebase-ui-auth:6.2.1"

    //Firebase
    implementation 'com.google.firebase:firebase-analytics:17.4.3'
    implementation 'com.google.firebase:firebase-core:17.4.3'
    implementation 'com.google.firebase:firebase-firestore-ktx:21.4.3'
    implementation "com.google.firebase:firebase-auth-ktx:19.3.1"


    // Required only if Facebook login support is required
    implementation 'com.facebook.android:facebook-android-sdk:7.0.0'
    // [END gradle_firebase_ui_auth]

}

Firebase 测试实验室设备生成的日志的摘录:

06-21 12:11:29.915: E/AuthUI(14514): A sign-in error occurred.
06-21 12:11:29.915: E/AuthUI(14514): com.firebase.ui.auth.FirebaseUiException: Code: 10, message: 10: 
06-21 12:11:29.915: E/AuthUI(14514):    at com.firebase.ui.auth.data.remote.GoogleSignInHandler.onActivityResult(GoogleSignInHandler.java:112)
06-21 12:11:29.915: E/AuthUI(14514):    at com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity.onActivityResult(AuthMethodPickerActivity.java:361)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.Activity.dispatchActivityResult(Activity.java:7462)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.ActivityThread.deliverResults(ActivityThread.java:4391)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4440)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
06-21 12:11:29.915: E/AuthUI(14514):    at android.os.Handler.dispatchMessage(Handler.java:106)
06-21 12:11:29.915: E/AuthUI(14514):    at android.os.Looper.loop(Looper.java:193)
06-21 12:11:29.915: E/AuthUI(14514):    at android.app.ActivityThread.main(ActivityThread.java:6718)
06-21 12:11:29.915: E/AuthUI(14514):    at java.lang.reflect.Method.invoke(Native Method)
06-21 12:11:29.915: E/AuthUI(14514):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-21 12:11:29.915: E/AuthUI(14514):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
06-21 12:11:29.916: D/LifecycleMonitor(14514): Lifecycle status change: com.firebase.ui.auth.KickoffActivity@f99b9c3 in: RESUMED
06-21 12:11:29.940: I/GoogleInputMethod(1463): onFinishInput() : Dummy InputConnection bound
06-21 12:11:29.940: I/GoogleInputMethod(1463): onStartInput() : Dummy InputConnection bound
06-21 12:11:29.945: I/Icing(10330): Indexing done com.google.android.inputmethod.latin-internal.3p:StickerPack [CONTEXT service_id=21 ]
06-21 12:11:29.946: I/Icing(10330): Indexing com.google.android.inputmethod.latin-internal.3p:Sticker from com.google.android.inputmethod.latin [CONTEXT service_id=21 ]
06-21 12:11:29.948: D/LifecycleMonitor(14514): Lifecycle status change: com.firebase.ui.auth.KickoffActivity@f99b9c3 in: PAUSED
06-21 12:11:29.962: I/FirebaseUIActivity(14514): Request Code: 123, Result Code: 0
06-21 12:11:29.962: E/FirebaseUIActivity(14514): Sign in failed with response error code: 4, and message: Code: 10, message: 10: 

下面的截图是我在 Firebase 控制台上的 SHA-1 指纹。 它们被定义为:

  • 以 A7 结尾:调试
  • 以 68 结尾:发布 (apk)
  • 以 66 结尾:商店(Play 商店)

Firebase 控制台 SHA-1 指纹

从关键工具获取签名以进行发布时,我得到:

来自 keytool 的 SHA-1

在 Google Play 商店中,我的上传证书显示为:

SHA-1 用于谷歌播放上传密钥

在 Google Play 商店中,应用签名证书显示为:

用于 Google Play 签名的 SHA-1

我的上传密钥的 OAuth 2 客户端显示为:

用于上传密钥的 OAuth 2 客户端

我的 google-services.json 内容是:

{
  "project_info": {
    "project_number": "*******",
    "firebase_url": "**********",
    "project_id": "************",
    "storage_bucket": "************"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:77*******:android:*******1e7",
        "android_client_info": {
          "package_name": "com.f***********.app"
        }
      },
      "oauth_client": [
        {
          "client_id": "77************-2u******************.googleusercontent.com",
          "client_type": 1,
          "android_info": {
            "package_name": "com.f***********.app",
            "certificate_hash": "ea#####################################68"
          }
        },
        {
          "client_id": "7****************-do**************.googleusercontent.com",
          "client_type": 1,
          "android_info": {
            "package_name": "com.f***********.app",
            "certificate_hash": "3e#####################################a7"
          }
        },
        {
          "client_id": "7**************-k8**************.googleusercontent.com",
          "client_type": 1,
          "android_info": {
            "package_name": "com.f***********.app",
            "certificate_hash": "d0#####################################66"
          }
        },
        {
          "client_id": "7**************-sf**************.googleusercontent.com",
          "client_type": 3
        }
      ],
      "api_key": [
        {
          "current_key": "AI**************_GQ"
        }
      ],
      "services": {
        "appinvite_service": {
          "other_platform_oauth_client": [
            {
              "client_id": "7**************-sf**************.googleusercontent.com",
              "client_type": 3
            },
            {
              "client_id": "7*********-3**************.googleusercontent.com",
              "client_type": 2,
              "ios_info": {
                "bundle_id": "com.f***********.app",
                "app_store_id": "********"
              }
            }
          ]
        }
      }
    }
  ],
  "configuration_version": "1"
}

任何下一步要看的想法将不胜感激。

所以...事实证明,可能需要 4(四个)签名密钥...第四个用于通过 Google Play 进行内部应用共享(我正在使用)。 要找到此密钥,您需要导航到 Google Play 控制台,如下所示:

神秘失踪的钥匙

将该密钥添加到您的 Firebase 控制台设置中,将新的 google-services.json 下载到您的项目中并运行。

检查此链接上的步骤 3 它将解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM