Java 注册用户添加的字段
因此,我正在尝试为我的android应用程序注册一个用户,目前它使用Firebase身份验证通过电子邮件和密码进行注册。但我正在尝试添加一个姓名和电话字段来注册Java 注册用户添加的字段,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,因此,我正在尝试为我的android应用程序注册一个用户,目前它使用Firebase身份验证通过电子邮件和密码进行注册。但我正在尝试添加一个姓名和电话字段来注册 Registration.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // register name/phone/radiogroup
Registration.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// register name/phone/radiogroup
final String name = nameField.getText().toString();
final String phone = phoneField.getText().toString();
final String email = Email.getText().toString();
final String password = Password.getText().toString();
if (TextUtils.isEmpty(name)) {
Toast.makeText(TradesmanLoginActivity.this,
"Please enter your Name...", Toast.LENGTH_SHORT).show();
}
if (TextUtils.isEmpty(phone)) {
Toast.makeText(TradesmanLoginActivity.this,
"Please enter your Phone Number...", Toast.LENGTH_SHORT).show();
}
if (TextUtils.isEmpty(email)) {
Toast.makeText(TradesmanLoginActivity.this,
"Please enter your Email Address...", Toast.LENGTH_SHORT).show();
}
if (TextUtils.isEmpty(password)) {
Toast.makeText(TradesmanLoginActivity.this,
"Please enter a Password...", Toast.LENGTH_SHORT).show();
} else {
loadingBar.setTitle("Tradesman Registration");
loadingBar.setMessage("Please wait while we check your credentials...");
loadingBar.show();
Auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(TradesmanLoginActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(TradesmanLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
} else {
Toast.makeText(TradesmanLoginActivity.this, "Tradesman Registration Successful!", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
String name = nameField.getText().toString();
String phone= phoneField.getText().toString();
HashMap<String,String> user=new HashMap<>();
user.put("Name",name);
user.put("Phone",phone);
String user_id = Auth.getCurrentUser().getUid();
DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Tradesman").child(user_id).child("Name");
current_user_db.setValue(email);
}
}
});
}
}
});
我已经创建了字段等,我只是在努力将姓名和电话输入firebase数据库
目前,它注册一个用户,并为用户的电子邮件设置名称。我想将姓名和电话存储为注册时输入的用户ID的子项,而不仅仅是电子邮件。如果您想在/Users/Tradesman/$uid下创建一个包含用户姓名和电话号码的节点,则如下所示:
Auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(TradesmanLoginActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(TradesmanLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
} else {
Toast.makeText(TradesmanLoginActivity.this, "Tradesman Registration Successful!", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
String name = nameField.getText().toString();
String phone= phoneField.getText().toString();
HashMap<String,String> user=new HashMap<>();
user.put("Name",name);
user.put("Phone",phone);
String user_id = Auth.getCurrentUser().getUid();
DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users/Tradesman").child(user_id);
current_user_db.setValue(user);
}
}
});
最大的变化是,您只在其中写入电子邮件,上面的更新会写入包含姓名和电话号码的整个地图。如果您想在/Users/Tradesman/$uid下创建一个包含用户姓名和电话号码的节点,如下所示:
Auth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(TradesmanLoginActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Toast.makeText(TradesmanLoginActivity.this, "sign up error", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
} else {
Toast.makeText(TradesmanLoginActivity.this, "Tradesman Registration Successful!", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
String name = nameField.getText().toString();
String phone= phoneField.getText().toString();
HashMap<String,String> user=new HashMap<>();
user.put("Name",name);
user.put("Phone",phone);
String user_id = Auth.getCurrentUser().getUid();
DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users/Tradesman").child(user_id);
current_user_db.setValue(user);
}
}
});
最大的变化是,您只在其中写入电子邮件,而上面的更新将使用姓名和电话号码写入整个地图。您将错误的值设置为setValue。换成这个
DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Tradesman").child(user_id);
current_user_db.setValue(user);
您在setValue中输入了错误的值。换成这个
DatabaseReference current_user_db = FirebaseDatabase.getInstance().getReference().child("Users").child("Tradesman").child(user_id);
current_user_db.setValue(user);
你到底在挣扎什么?是不是有些东西没有按你期望的方式工作?请编辑问题的更多细节,这样我们就知道问题出在哪里了。我正在努力在注册时添加额外的字段。据我所知,目前它会创建一个用户ID子项,然后在其中创建一个子项“名称”以及电子邮件。我希望能够注册一个用户,并将其姓名/电话添加为唯一IDY的子项。您必须明确解释您希望最终结果是什么,以及您现在正在做什么,这不是您所期望的。请编辑问题以添加详细信息。因此,我希望最终结果是:我使用电子邮件/密码身份验证注册用户。这将在实时数据库中为用户创建一个唯一的ID,并存储用户作为子用户输入的姓名和电话。它当前存储用户输入的电子邮件作为名称,而我没有电话儿童字段你到底在忙什么?是不是有些东西没有按你期望的方式工作?请编辑问题的更多细节,这样我们就知道问题出在哪里了。我正在努力在注册时添加额外的字段。据我所知,目前它会创建一个用户ID子项,然后在其中创建一个子项“名称”以及电子邮件。我希望能够注册一个用户,并将其姓名/电话添加为唯一IDY的子项。您必须明确解释您希望最终结果是什么,以及您现在正在做什么,这不是您所期望的。请编辑问题以添加详细信息。因此,我希望最终结果是:我使用电子邮件/密码身份验证注册用户。这将在实时数据库中为用户创建一个唯一的ID,并存储用户作为子用户输入的姓名和电话。它当前存储用户输入的电子邮件作为名称,我没有一个电话子字段Thankyou有意义,我知道setValue中的电子邮件有问题,但不知道我使用MapThankyou是否正确有意义,我知道setValue中的电子邮件有问题,但不知道我使用MapThankyou是否正确,有意义:谢谢,有意义: