我尝试使用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控制台导入的事实有关。