我正在学习我在 Firebase (Udacity) 中的第一门类(class),并且有看起来像这样实现 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 登录。或者至少,像上面那样防止无限循环?
如果您需要更多详细信息,请告诉我
最佳答案
验证用户需要 Activity 连接。 Firebase 无法在不连接到其服务器的情况下对您的用户进行身份验证。
因此,一种处理方法是仅在用户设备为 connected to the network 时显示登录对话框。和/或 connected to Firebase .
关于android - FirebaseUI 离线授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926833/