FirebaseUI Auth离线

时间:2017-03-21 12:13:18

标签: android firebase firebase-realtime-database firebase-authentication

我正在浏览Firebase(Udacity)的第一个课程,并且代码看起来像实现Firebase Auth

private FirebaseAuth mFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
....
    mAuthStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                onSignedInInitialize(user.getDisplayName());
            } else {
                // User is signed out
                onSignedOutCleanup();
                startActivityForResult(
                        AuthUI.getInstance()
                                .createSignInIntentBuilder()
                                .setIsSmartLockEnabled(false)
                                .setProviders(
                                        AuthUI.EMAIL_PROVIDER,
                                        AuthUI.GOOGLE_PROVIDER)
                                .build(),
                        RC_SIGN_IN);
            }
        }
    };

@Override
protected void onResume() {
    super.onResume();
    mFirebaseAuth.addAuthStateListener(mAuthStateListener);
}

当应用程序脱机启动时,此代码会进入无限循环。

onResume - > onAuthStateChanged-> startActivityForResult-> onActivityResult(与ErrorCodes.NO_NETWORK失败) - >的onResume

有没有办法让FirebaseUI-Auth登录屏幕脱机,以便我可以使用Android Smart Lock登录。或者至少,如上所述阻止无限循环?

如果您需要额外的详细信息,请告诉我

1 个答案:

答案 0 :(得分:2)

对用户进行身份验证需要有效连接。 Firebase无法在未连接其服务器的情况下对用户进行身份验证。

因此,处理此问题的一种方法是仅在用户的设备为connected to the network和/或connected to Firebase时显示登录对话框。