gpt4 book ai didi

java - Firebase 实时数据库值检索

转载 作者:行者123 更新时间:2023-11-29 18:25:53 25 4
gpt4 key购买 nike

我正在使用手机号码对用户进行身份验证。现在我想知道,如果用户是第一次使用,那么它将重定向到某些 Activity ,并且如果用户之前已经登录,那么用户可以导航到仪表板屏幕。我该如何解决这个问题?这是我的数据库快照。H enter image description here这是我的用户类。

public class User {
String userName, mobile;
List<Object> groupIds;
public User(String userName, String mobile) {
this.userName = userName;
this.mobile = mobile;
groupIds = new ArrayList<>();
groupIds.add("group1");
}
public User() {}

public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public List<Object> getGroupIds() {
return groupIds;
}
public void setGroupIds(List<Object> groupIds) {
this.groupIds = groupIds;
}
}

在身份验证成功时,我正在编写以下代码:

   mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
showData(dataSnapshot);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
private void showData(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
User uInfo = new User();
uInfo.setUserName(ds.child("Users").child("112233").getValue(User.class).getUserName());
uInfo.setMobile(ds.child("Users").child("112233").getValue(User.class).getMobile());
Log.d(TAG, "showData: name: " + uInfo.getMobile());
Log.d(TAG, "showData: email: " + uInfo.getUserName());
}
}

最佳答案

既然您使用的是 firebase 身份验证,那么您可以执行以下操作:

首先在 if (task.isSuccessful()) { 中,执行以下操作:

boolean isNew = task.getResult().getAdditionalUserInfo().isNewUser();

如果 isNew 返回 true 那么用户是第一次登录,您可以导航到 Profile Activity


如果您希望用户导航到仪表板 Activity ,那么您可以检查用户是否为空:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// User is signed in
} else {
// No user is signed in
}

如果用户不等于 null,则导航到仪表板 Activity ,否则导航到登录页面。

如果您调用 FirebaseAuth.getInstance().signOut();

FirebaseAuth.getInstance().getCurrentUser() 将返回 null,这意味着如果您不退出,则它始终不等于 null,因此您将能够导航到仪表板 Activity 。

查看以下内容以获取更多信息:

https://firebase.google.com/docs/auth/android/manage-users

https://firebase.google.com/docs/reference/android/com/google/firebase/auth/AdditionalUserInfo

关于java - Firebase 实时数据库值检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59084320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com