在OnAuthStateChanged内部调用Firebase reload()是个好主意吗?最初,我会在应用初始化期间调用reload(),但不能保证FirebaseUser对象已加载。如果用户不为null,则似乎在OnAuthStateChanged()内部进行调用是一种干净的方法。逻辑是返回的用户配置文件将与缓存的配置文件匹配,并且不会发出对OnAuthStateChanged的后续调用。它可以正常工作-但我出于某种可能对我不明显的原因而担心循环失控。
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth)
{
final FirebaseUser user = mAuth.getCurrentUser();
//call reload here???
if (user != null)
{
user.reload().addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{
if (e instanceof FirebaseAuthInvalidUserException)
{
Log.e(TAG, "INVALID USER EXCEPTION: " + e);
Disconnect();
SignOut();
}
}
});
}
}
答案 0 :(得分:1)
我不希望reload()
对新登录的用户做任何重要的事情。由于onAuthStateChanged
指示用户刚刚登录,因此配置文件信息应该刚刚从后端服务加载。那时重新加载可能不会有帮助。
重新加载的目的是在用户登录一段时间后,您的代码正在尝试检查自上次登录以来其个人资料是否有所更改。