android - 收到登录尝试的结果时,FirebaseAuthUI 使应用程序崩溃

标签 android firebase firebase-authentication

所以我正在使用 FirebaseAuthUi,当我收到来自登录进程的请求时,我不断收到此错误:

com.firebase.ui.auth.FirebaseUiException:保存凭据时出错。

...

原因:com.google.android.gms.common.api.ApiException: 16: 当前应用的保存提示被禁用。要恢复,请将此应用程序从 Smart Lock for Passwords 设置中此设备上所有帐户的“从不保存”列表中删除。

这是我的 Activity 结果中的代码:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.i(TAG, "SignInFinished");
    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        if (resultCode == RESULT_OK) {
            if(buttonLastPressed){
                loadUserFromDataBase();
            }
            else{
                pushUserToDatabase();
            }
        } else {
            Log.i(TAG, "SignInError");
            if(response == null){
                return;
            }
            // Sign in failed. If response is null the user canceled the
            // sign-in flow using the back button. Otherwise check
            // response.getError().getErrorCode() and handle the error.

            response.getError().printStackTrace();

        }
    }
}

第二个日志“SignInError”从不显示,所以我什至无法告诉用户登录失败。

我很确定我可以通过进入设置并更改错误内容来解决此问题,但由于错误部分从未运行,我无法告诉用户出了什么问题。他们返回到启动登录过程的 Activity ,并且没有任何迹象表明发生了任何变化。

最佳答案

希望这可以帮助某人:
签名步骤后,会提示将凭据保存到智能锁。
当您取消此提示时,可能会发生崩溃,因为它返回结果 CANCELED。
如果您没有在项目中使用智能锁或者没有必要,您可以在配置签名方法时禁用它。
因此,您将不会收到智能锁提示,并且签名结果将直接返回(RESULT_OK 或 RESULT_CANCELED 等)
以下是有关如何从您的 firebase 项目中禁用智能锁的示例:

private final Intent signIn = AuthUI.getInstance()
    .createSignInIntentBuilder().setIsSmartLockEnabled(false)
    .setAvailableProviders(providers)
    .build();

关于android - 收到登录尝试的结果时,FirebaseAuthUI 使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51502414/

相关文章:

android - 在Android中使用firebase通过ID查找对象的方法

ios - 什么是 AuthStateDidChangeListenerHandle?

android - onViewCreated - 替换 fragment 的错误位置?

java - 如何在imageview上对图像进行灰度化?

java - Android多个activity访问一个java类

javascript - 登录时从用户集合中获取用户数据

android - 这个类应该是公共(public)的(android.support.v7.internal.widget.ActionBarView.HomeView)

node.js - Firebase 数据库特定成员(member)级别仅每月访问

Firebase Authentication JS 不填充 `providerData` 数组

angular - Firebase 用户在登录时合并身份验证提供程序