Firebase Auth Ui Google登录“Developer Error”

时间:2017-10-26 02:28:11

标签: android firebase firebase-authentication google-signin

我有一个使用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上。

我试图解决这个问题好几天,但似乎没有办法。

由于

4 个答案:

答案 0 :(得分:8)

您已在控制台中添加了调试密钥的签名。但是发布密钥的签名是不同的。添加用于在firebase控制台中对apk进行签名的释放密钥签名。

首先使用以下命令生成密钥:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

然后复制SHA-1校验和并转到:

  

Firebase控制台&gt;你的项目&gt; <应用程序的设置>添加指纹

答案 1 :(得分:0)

您已添加两个键

  1. 您的Android调试密钥SHA-1

  2. 您的发布密钥SHA-1

  3. 的签名

答案 2 :(得分:0)

最简单的方法是使用android studio: 工具-> Firebase->身份验证->单击小播放按钮,然后按第一个选项中的“连接”按钮。 Android Studio将为您完成此操作,生成SHA-1密钥并将其添加到您的项目中。

答案 3 :(得分:0)

Google越来越丑陋,它们使简单的事情变得复杂。问题是第三个关键,

1,调试键

2,释放键

3,Google Play应用签名键

您需要三个密钥才能确定一个Google登录。

facebook还需要三个键吗?也许有一天Google将需要30个密钥。