我有一个使用firebase和firebase auth ui库的项目。问题是我无法使用Google登录登录,当我尝试加载一两秒钟然后只显示一个“开发者错误”的Toast消息。我可以用电子邮件和密码登录就好了。这只是签名apks的问题,当我调试Google时,登录工作正常。
在我的proguard-rules.pro中,我将minifyEnabled设置为false。
我已将SHA-1添加到我的firebase项目并下载了正确的json文件。
来自app level build.gradle的依赖性阻止
def list = [
[A:'A1', B:'B1', C:'C1', D:'D1', E:'E1', F:'F1', G:'G1', H:'H1'],
[A:'A2', B:'B2', C:'C2', D:'D2', E:'E2', F:'F2', G:'G2', H:'H2'],
[A:'A3', B:'B3', C:'C3', D:'D3', E:'E3', F:'F3', G:'G3', H:'H3']
]
// Flexibility on merge condition by provding a Closure
Map mergeOn(Map one, Map two, Closure closure) {
two.inject([:] << one) { acc, key, val ->
key in acc.keySet() ? acc[key] = closure(acc[key], val) : acc << [(key): val]
acc
}
}
assert list.inject { acc, item ->
mergeOn(acc, item) { a, b ->
a instanceof List ? a << b : [a, b]
}
}.collect { k, v -> [(k) : v] } == [
[A: ['A1', 'A2', 'A3']],
[B: ['B1', 'B2', 'B3']],
[C: ['C1', 'C2', 'C3']],
[D: ['D1', 'D2', 'D3']],
[E: ['E1', 'E2', 'E3']],
[F: ['F1', 'F2', 'F3']],
[G: ['G1', 'G2', 'G3']],
[H: ['H1', 'H2', 'H3']]
]
这是我的AuthStateListener
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.0.2'
compile 'com.android.support:design:26.0.2'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:design:26.0.2'
compile 'com.android.support:cardview-v7:26.0.2'
compile 'com.google.firebase:firebase-database:11.4.2'
compile 'com.google.firebase:firebase-auth:11.4.2'
compile 'com.firebaseui:firebase-ui-auth:3.1.0'
testCompile 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
logcat显示没有错误或任何内容。我会在发生这种情况时发布logcat,但我不知道如何从签名的apk获取logcat,因为这只发生在apk上。
我试图解决这个问题好几天,但似乎没有办法。
由于
答案 0 :(得分:8)
您已在控制台中添加了调试密钥的签名。但是发布密钥的签名是不同的。添加用于在firebase控制台中对apk进行签名的释放密钥签名。
首先使用以下命令生成密钥:
keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME
然后复制SHA-1校验和并转到:
Firebase控制台&gt;你的项目&gt; <应用程序的设置>添加指纹
答案 1 :(得分:0)
您已添加两个键
您的Android调试密钥SHA-1
您的发布密钥SHA-1
答案 2 :(得分:0)
最简单的方法是使用android studio: 工具-> Firebase->身份验证->单击小播放按钮,然后按第一个选项中的“连接”按钮。 Android Studio将为您完成此操作,生成SHA-1密钥并将其添加到您的项目中。
答案 3 :(得分:0)
Google越来越丑陋,它们使简单的事情变得复杂。问题是第三个关键,
1,调试键
2,释放键
3,Google Play应用签名键
您需要三个密钥才能确定一个Google登录。
facebook还需要三个键吗?也许有一天Google将需要30个密钥。