在我的Firebase应用程序中,我存储用户的ID。然后,我想在用户ID下存储特定数据,该ID应该可以正常工作。我的问题是,当重新打开应用程序时,将删除用户特定的数据。
我想这是因为再次添加或覆盖了用户ID,因此删除了子节点。
如果我的用法正确,如何确定我的用户ID不被覆盖?是否有一个signUp方法仅在用户首次获取其ID时运行?我曾想将其存储在signInAnonymously()
方法中,但似乎每次启动时也会调用它。
这是我的登录代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
mDatabase = FirebaseDatabase.getInstance().getReference();
// active listen to user logged in or not.
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d("TAG", "onAuthStateChanged:signed_in:" + user.getUid());
userID = user.getUid();
mDatabase.child("users").child(userID).setValue(userID);
Log.d("uid", userID);
} else {
// User is signed out
Log.d("TAG", "onAuthStateChanged:signed_out");
}
}
};
mAuth.signInAnonymously()
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d("TAG", "OnComplete : " +task.isSuccessful());
if (!task.isSuccessful()) {
Log.d("TAG", "Authentication Failed : ", task.getException());
}
}
});
}