由于关键限制,应用无法登录Firebase?

时间:2018-03-07 21:49:14

标签: android firebase firebase-authentication firebaseui

我尝试使用Firebase Auth登录Android应用程序(稍后是iOS版本),服务器一直拒绝尝试。只要尝试登录,就会在logcat中显示以下异常(这是Google登录尝试;电子邮件/密码登录时也会发生类似情况):

Firebase sign in with credential google.com unsuccessful. Visit https://console.firebase.google.com to enable it.  
com.google.firebase.FirebaseException: An internal error has occurred. [ The Android package name and signing-certificate fingerprint, [package name removed] and [fingerprint removed], do not match the app restrictions configured on your API key. Please use the API Console to update your key restrictions. ]
    at com.google.android.gms.internal.zzdxm.zzao(Unknown Source)
    at com.google.android.gms.internal.zzdwn.zza(Unknown Source)  
    at com.google.android.gms.internal.zzdxx.zzap(Unknown Source)  
    at com.google.android.gms.internal.zzdya.onFailure(Unknown Source)
    at com.google.android.gms.internal.zzdxo.onTransact(Unknown Source)
    at android.os.Binder.execTransact(Binder.java:565)

我已检查过Firebase控制台,并启用了三种登录方式:Google,电子邮件/密码和匿名。 (我还没有尝试匿名登录。)我还检查了项目设置,异常中显示的包名和SHA-1指纹与控制台中显示的内容完全匹配

我使用以下内容启动登录流程:

public void signIn() {
    final List<AuthUI.IdpConfig> providers = Arrays.asList(
            new AuthUI.IdpConfig.GoogleBuilder().build(),
            new AuthUI.IdpConfig.EmailBuilder().build()
    );
    startActivityForResult(
            AuthUI.getInstance()
                  .createSignInIntentBuilder()
                  .setAvailableProviders(providers)
                  .build(),
            RC_SIGN_IN
    );
}

登录流程会提示用户选择要使用的Google帐户,但之后会因上述异常而死亡。

以下是我的build.gradle文件中的依赖项:

ext {
    supportLibVersion = '27.1.0'
    playServicesVersion = '11.8.0'
    firebaseUIVersion = '3.2.2'
    butterKnifeVersion = '8.8.1'
}

dependencies {
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
        // this next avoids a findbugs version conflict with
        // com.google.api-client:google-api-client-android
        exclude group: 'com.google.code.findbugs'
    })

    // ButterKnife
    implementation "com.jakewharton:butterknife:$butterKnifeVersion"
    annotationProcessor "com.jakewharton:butterknife-compiler:$butterKnifeVersion"

    // Support libraries
    implementation "com.android.support:appcompat-v7:$supportLibVersion"
    implementation "com.android.support:design:$supportLibVersion"
    implementation "com.android.support:preference-v14:$supportLibVersion"
    implementation "com.android.support:cardview-v7:$supportLibVersion"
    implementation "com.android.support:animated-vector-drawable:$supportLibVersion"
    implementation "com.android.support:support-vector-drawable:$supportLibVersion"
    implementation "com.android.support:customtabs:$supportLibVersion"
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'

    // Firestore
    implementation "com.google.firebase:firebase-firestore:$playServicesVersion"

    // FirebaseUI
    implementation "com.firebaseui:firebase-ui-auth:$firebaseUIVersion"

    implementation 'pub.devrel:easypermissions:1.1.3'
    implementation('com.google.api-client:google-api-client-android:1.22.0') {
        exclude group: 'org.apache.httpcomponents'
    }
    implementation('com.google.apis:google-api-services-drive:v3-rev72-1.22.0') {
        exclude group: 'org.apache.httpcomponents'
    }
    testImplementation 'junit:junit:4.12'
}

我已经为该项目下载了一个新的google-services.json文件,并且我已经清理并重建了该项目。这些步骤没有帮助。

我尝试了与另一个项目完全相同的登录方法,一切正常。我可以想到的两个项目之间唯一的区别是,工作的那个是在Firebase控制台中创建的,而这个不起作用的是在Google Cloud控制台中创建的,后来当我们导入Firebase控制台时决定将一些Firebase功能合并到应用程序中。

如果唯一的解决方案是删除应用并直接在Firebase控制台中重新创建,我就会这样做。但是,我们已经完成了很多项目配置(通过Google云端控制台),如果可能的话,我想避免这一步骤。

编辑因此,我使用不同的软件包名称在Firebase控制台中创建了一个新项目,并启用了相同的登录方法。然后我(暂时)更改了build.gradle文件中的包名。修改后的应用程序登录就好了。所以问题肯定与Firebase控制台中的项目配置有关,而不是客户端。此时,我强烈怀疑该问题与项目是从Google Cloud控制台导入的事实有关。

0 个答案:

没有答案