我正在浏览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登录。或者至少,如上所述阻止无限循环?
如果您需要额外的详细信息,请告诉我
答案 0 :(得分:2)
对用户进行身份验证需要有效连接。 Firebase无法在未连接其服务器的情况下对用户进行身份验证。
因此,处理此问题的一种方法是仅在用户的设备为connected to the network和/或connected to Firebase时显示登录对话框。