Firebase Auth Ui Google 登录“开发者错误”

Posted

技术标签:

【中文标题】Firebase Auth Ui Google 登录“开发者错误”【英文标题】:Firebase Auth Ui Google Sign In "Developer Error" 【发布时间】:2018-04-07 06:44:39 【问题描述】:

我有一个使用 firebase 和 firebase auth ui 库的项目。问题是我无法使用 Google 登录进行登录,当我尝试加载一两秒时,它只显示一条吐司消息,上面写着“开发人员错误”。我可以用电子邮件和密码登录就好了。这只是签名apks的问题,当我调试谷歌时,登录工作正常。

在我的 proguard-rules.pro 中,我将 minifyEnabled 设置为 false。

我已将 SHA-1 添加到我的 firebase 项目并下载了正确的 json 文件。

来自应用级别 build.gradle 的依赖块

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'

这是我的 AuthStateListener

mAuthStateListener = new FirebaseAuth.AuthStateListener() 
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) 
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) 
                    signedInInitialized();
                 else 
                    signedOutCleanUp();
                    startActivityForResult(
                            AuthUI.getInstance()
                                    .createSignInIntentBuilder()
                                    .setTheme(R.style.FirebaseSignInTheme)
                                    .setIsSmartLockEnabled(false)
                                    .setAvailableProviders(
                                            Arrays.asList(new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
                                                new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build()))
                                .build(),
                        RC_SIGN_IN);
                
            
        ;

logcat 没有显示任何错误或任何东西。发生这种情况时我会发布 logcat,但我不知道如何从已签名的 apk 中获取 logcat,因为这只发生在签署 apk 时。

我已经尝试了好几天,但似乎没有成功。

谢谢

【问题讨论】:

【参考方案1】:

Google 变得越来越丑陋,他们让简单的事情变得复杂。问题是第三把钥匙,

1、调试键

2、释放键

3、Google Play 应用签名密钥

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

Facebook 也需要三个键吗?也许有一天 google 需要 30 个键。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

你已经添加了两个键

    您的 android 调试密钥 SHA-1

    您对发布密钥 SHA-1 的签名

【讨论】:

【参考方案4】:

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

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

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

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

Firebase 控制台 > 您的项目 > 应用设置 > 添加指纹

【讨论】:

很高兴我能帮上忙。 :) 我已经添加了 Debug 和 Release SHA1 但仍然无法正常工作。但是,它可以在 Debug Mod 中使用。 这里不工作。当我为 Firebase-UI 使用 google-sign-in 时,我的应用程序中出现“开发人员错误”和“发生未知错误”

以上是关于Firebase Auth Ui Google 登录“开发者错误”的主要内容,如果未能解决你的问题,请参考以下文章

com.firebase.ui.auth.FirebaseUiException:提供程序错误 - Firebase-UI 身份验证 Facebook 登录不起作用

Firebase UI - Auth - 使用自己的布局

Firebase Auth UI 如何处理重新身份验证?

由于 12500(SIGN_IN_FAILED) 错误代码,使用 Google 登录 Firebase UI 失败

与 Crashlytics 一起运行 Firebase-Auth + Firebase-UI

com.google.firebase.auth.FirebaseAuth 未链接