0
当用户第一次在应用程序中使用您的Google帐户登录时,我开展了此活动以在数据库中创建用户。它正在工作,但正在数据库中创建多个用户,我不知道为什么。即使存在于你的数据库如何创建用户,如果它不存在?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() == null) {
goLogInScreen();
} else {
final String userGoogleEmail = firebaseAuth.getCurrentUser().getEmail();
databaseUser.orderByChild("userEmail").equalTo(userGoogleEmail).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
//User already exists
} else {
//Can create new user
String id = databaseUser.push().getKey();
User user = new User(id, userGoogleEmail, null);
databaseUser.child(id).setValue(user);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
};
是不是只有当数据库中没有现有用户时才运行,但是当它运行一次时,它会为该用户在数据库中创建多个条目?如果是这样,它会在数据库中创建一个用户多少次? – Geremy
是的,只有在数据库中不存在的情况下,以及运行时(有时候我已经尝试过),在4,2和6次之间变化。 @geremy –
考虑使用共享首选项而不是仅依赖于getCurrentUser()这可能是firebase同步的问题!如果用户登录第一次在SharedPreference中存储一个值。如果用户重新访问该应用程序,则尝试检索SharedPreference。 – Xenolion