我正在制作一个Android应用,人们可以登录和注册,他们将拥有一个个人资料,其中包含他们的所有信息,例如名字,姓氏,电子邮件。我正在使用Firebase,因此可以构建此应用程序。我遇到的问题是我正在尝试从Firebase数据库检索经过身份验证的用户信息,例如他们的名字或姓氏,但我看不出如何将其提取出来。我只能在那儿收到电子邮件,电话号码或个人资料照片。下面是我的代码。
//Register.java
fname=(EditText)findViewById(R.id.your_name);
lname=(EditText)findViewById(R.id.your_last_name);
email=(EditText)findViewById(R.id.signupemail);
password=(EditText)findViewById(R.id.signuppassword);
signinbutton=(TextView) findViewById(R.id.have_an_account_button);
signupbutton=(TextView) findViewById(R.id.signupbutton1);
firebaseAuth=FirebaseAuth.getInstance();
databaseReference=FirebaseDatabase.getInstance().getReference("businessowners");
signupbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String txt_firstname=fname.getText().toString();
final String txt_lastname=lname.getText().toString();
final String txt_email=email.getText().toString();
final String txt_password=password.getText().toString();
if(txt_firstname.isEmpty() ){
Toast.makeText(RegisterActivity.this,"Name required",Toast.LENGTH_SHORT).show();
}
if(txt_email.isEmpty()){
Toast.makeText(RegisterActivity.this,"Email required",Toast.LENGTH_SHORT).show();
}
if(txt_password.isEmpty()){
Toast.makeText(RegisterActivity.this,"Password",Toast.LENGTH_SHORT).show();
}
firebaseAuth.createUserWithEmailAndPassword(txt_email,txt_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
businessowners information=new businessowners(
txt_firstname,
txt_lastname,
txt_email
);
FirebaseDatabase.getInstance().getReference("businessowners").child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(information).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(RegisterActivity.this,"Registration successful",Toast.LENGTH_SHORT).show();
Intent inty=new Intent(RegisterActivity.this,LoginActivity.class);
startActivity(inty);
}
});
}else if(task.getException() instanceof FirebaseAuthUserCollisionException){
email.setError("Email exist");
email.requestFocus();
}
}
});
}
});
//Profile.java
txt=(EditText)findViewById(R.id.edit_email);
txt1=(EditText)findViewById(R.id.edit_firstname);
signoutbtn=(TextView)findViewById(R.id.signout);
firebaseAuth=FirebaseAuth.getInstance();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference("user");
String UID=FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseUser firebaseUser=firebaseAuth.getCurrentUser();
//Get users email
String user_info1=firebaseUser.getEmail();
//display users email
txt.setText(user_info1);
signoutbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
firebaseAuth.signOut();
finish();
Intent inty=new Intent(ProfileActivity.this,LoginActivity.class);
startActivity(inty);
}
});
答案 0 :(得分:0)
我遇到的问题是我正在尝试从Firebase数据库中检索经过身份验证的用户信息,例如他们的名字或姓氏
问题是您试图从{strong>不包含该信息的FirebaseUser
对象获取名字和姓氏。在下面的代码行中:
firebaseAuth.createUserWithEmailAndPassword(txt_email,txt_password)
您将仅{strong>仅使用createUserWithEmailAndPassword()
和txt_email
的{{1}}方法,这就是为什么只有该数据可用的原因。如果要获取所有数据,则需要从数据库获取它,因为所有这些数据仅存在于那里。以下代码可以解决问题:
txt_password
logcat中的输出将是经过身份验证的用户的名字和姓氏。