【发布时间】:2019-11-07 16:02:24
【问题描述】:
我正在制作一个 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);
}
});
【问题讨论】:
-
向我们展示您如何验证用户身份。
-
@AlexMamo 你是什么意思?他们必须先注册,然后我从 firebase 数据库中提取他们的信息。我上面有一个例子,比如他们的电子邮件。
-
向我们展示该代码。
-
@AlexMamo 我刚刚编辑了我的代码
标签: android firebase firebase-authentication