当前位置 : 主页 > 网络编程 > 其它编程 >

从Firebase实时数据库获取当前用户信息

来源:互联网 收集:自由互联 发布时间:2023-07-02
我用Java开发了一个登录应用程序,用户可以使用其电子邮件地址和密码登录。到 我用Java开发了一个登录应用程序,用户可以使用其电子邮件地址和密码登录。到目前为止,该方法工作
我用Java开发了一个登录应用程序,用户可以使用其电子邮件地址和密码登录。到

我用Java开发了一个登录应用程序,用户可以使用其电子邮件地址和密码登录。到目前为止,该方法工作正常,但是我遇到的问题是,当我进入家庭活动时,我的UserModel.java为null。这对我来说也很有意义,因为Firebase Auth仅检查电子邮件和密码,而不从实时数据库中选择相关信息。因此,我插入了一个数据快照,由于系统输出了所需的名称,因此它也可以按预期的方式工作。现在我的问题是如何将这个数据快照分配给我的UserModel,以便我的UserModel不再为空(是吗?!)。在我的Homeactivity的最后一部分中,您可以看到一个字符串,其中应该包含用户名,但是即使我使用现有帐户登录,该字符串也只会显示“示例名称”。由于系统正在打印出正确的名称,因此我相信Datasnapshot可以正常工作。

感谢您的帮助!

我的Homeactivity的一部分

firebaseAuth = FirebaseAuth.getInstance(); firebaseDatabase = FirebaseDatabase.getInstance(); final FirebaseDatabase database =FirebaseDatabase.getInstance(); DatabaseReference myref=database.getReference("Users").child(firebaseAuth.getUid()); myref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull Datasnapshot datasnapshot) { UserModel userModel= datasnapshot.getvalue(UserModel.class); System.out.println(userModel.getName()); currentUser=userModel; } @Override public void onCancelled(@NonNull DatabaseError databaseError) { Toast.makeText(Homeactivity.this,""+databaseError.getcode(),Toast.LENGTH_SHORT).show(); } }); if(currentUser!=null) { Common.setSpanString("Hey,",currentUser.getName(),txt_user); } else{ UserModel userModel = new UserModel(uid,name,address,phone,email,password); userModel.setName("Example Name"); Common.setSpanString("Hey,userModel.getName(),txt_user); }

UserModel

private String uid,password; public UserModel() { } public UserModel(String uid,String name,String address,String phone,String email,String password) { this.uid = uid; this.name = name; this.address = address; this.phOne= phone; this.email = email; this.password = password; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getaddress() { return address; } public void setaddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phOne= phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}

我的普通班的一部分

public static UserModel currentUser;


我现在将代码的两个部分放在一起,并能够显示具有正确名称的字符串。但是,Common.CurrentUser不会被初始化,只要属性没问题就没问题。

firebaseAuth = FirebaseAuth.getInstance(); firebaseDatabase = FirebaseDatabase.getInstance(); if(firebaseAuth.getCurrentUser()!=null) { final FirebaseDatabase database =FirebaseDatabase.getInstance(); DatabaseReference myref=database.getReference("Users").child(firebaseAuth.getUid()); myref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { UserModel userModel= dataSnapshot.getValue(UserModel.class); System.out.println(userModel.getName()); Common.setSpanString("Hey,",userModel.getName(),txt_user); currentUser=userModel; } @Override public void onCancelled(@NonNull DatabaseError databaseError) { Toast.makeText(HomeActivity.this,""+databaseError.getCode(),Toast.LENGTH_SHORT).show(); } }); }else{ UserModel userModel = new UserModel(uid,name,address,phone,email,password); userModel.setName("Example Name"); Common.setSpanString("Hey,txt_user); }【本文来自:台湾服务器 http://www.558idc.com/tw.html 复制请保留原URL】

上一篇:R语言中求平方根sqrt、求对数函数log
下一篇:没有了
网友评论