java - Firebase 实时数据库值检索
问题描述
我正在使用手机号码对用户进行身份验证。现在我想知道,如果用户是第一次使用,那么它将重定向到某些活动,并且如果用户之前已经登录,那么用户可以导航到仪表板屏幕。我该如何解决这个问题?这是我的数据库快照。H 这是我的用户类。
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
如果您希望用户导航到仪表板活动,那么您可以检查用户是否为空:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// User is signed in
} else {
// No user is signed in
}
如果用户不等于 null,则导航到仪表板活动,否则导航到登录页面。
FirebaseAuth.getInstance().getCurrentUser()
如果您调用将返回 null,FirebaseAuth.getInstance().signOut();
这意味着如果您不退出,那么它将始终不等于 null,因此您将能够导航到仪表板活动。
检查以下内容以获取更多信息:
https://firebase.google.com/docs/auth/android/manage-users
https://firebase.google.com/docs/reference/android/com/google/firebase/auth/AdditionalUserInfo
推荐阅读
- javascript - 如何使用 React Router 将道具从一页传递到另一页
- powershell - 使用 PowerShell 下载并安装 CCleaner
- ruby-on-rails - 数组的未定义方法“permit”
- sql - 嵌套选择语句的 LINQ Lambda 查询
- sql - 在livesql中创建表中的约束顺序问题
- azure - A:收到有关 azure devops 服务更改的通知
- java - 包含 aws-java-sdk-acmpca 时 Eclipse 中的 Maven 错误
- python - 爆炸我的熊猫列不再起作用
- java - 如何让按钮暂停记住 MediaPlayer 停止的位置?
- python - 我想使用 XAMPP 在 Web 浏览器中显示 PYTHON 图