Итак, посмотрите, когда мой пользователь регистрирует себя, его идентификатор в базе данных firebase генерируется случайным образом, и я хочу иметь UID нового зарегистрированного пользователя в качестве идентификатора документа в firebase, как я могу это изменить? Я не нашел никакой функции, чтобы сохранить документ как строку или что-то в этом роде ..
Вот мой регистрационный код:
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.FirebaseFirestore;
import java.util.HashMap;
public class RegisterActivity extends AppCompatActivity {
private EditText UserName, FullName, eMail1, eMail2, Password, Day, Month, Year;
private Button registerButton;
private CheckBox male, female, other;
private FirebaseAuth mAuth;
private ProgressDialog loadingBar;
public String currentUserId, username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mAuth = FirebaseAuth.getInstance();
loadingBar = new ProgressDialog(this);
UserName = (EditText) findViewById(R.id.register_username);
FullName = (EditText) findViewById(R.id.register_name);
eMail1 = (EditText) findViewById(R.id.register_email);
eMail2 = (EditText) findViewById(R.id.register_email_2);
Password = (EditText) findViewById(R.id.register_password);
Day = (EditText) findViewById(R.id.register_birthday_day);
Month = (EditText) findViewById(R.id.register_birthday_month);
Year = (EditText) findViewById(R.id.register_birthday_year);
registerButton = (Button) findViewById(R.id.register_button);
male = (CheckBox) findViewById(R.id.register_male);
other = (CheckBox) findViewById(R.id.register_other);
female = (CheckBox) findViewById(R.id.register_female);
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CreateNewAccount();
}
});
}
private void CreateNewAccount() {
username = UserName.getText().toString();
String fullname = FullName.getText().toString();
String email1 = eMail1.getText().toString();
String email2 = eMail2.getText().toString();
String password = Password.getText().toString();
String day = Day.getText().toString();
String month = Month.getText().toString();
String year = Year.getText().toString();
if(TextUtils.isEmpty(username)){
Toast.makeText(this,"Please type in your username...", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(fullname)){
Toast.makeText(this,"Please type in your full name...", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(email1)){
Toast.makeText(this,"Please type in your eMail...", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(email2)){
Toast.makeText(this,"Please retype your eMail again...", Toast.LENGTH_SHORT).show();
}
else if(!email1.equals(email2)){
Toast.makeText(this,"You entered two different emails...? Please try again", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(password)){
Toast.makeText(this,"Please type in your password...", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(day)){
Toast.makeText(this,"Please enter your birthday day...", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(month)){
Toast.makeText(this,"Please enter your birthday month...", Toast.LENGTH_SHORT).show();
}
else if(TextUtils.isEmpty(year)){
Toast.makeText(this,"Please enter your birthday year...", Toast.LENGTH_SHORT).show();
}
else if(!male.isChecked() && !female.isChecked() && !other.isChecked()){
Toast.makeText(this,"Chose your gender...", Toast.LENGTH_SHORT).show();
}
else if(male.isChecked() && female.isChecked()){
Toast.makeText(this,"Please choose only one gender...", Toast.LENGTH_SHORT).show();
}
else if(male.isChecked() && other.isChecked()){
Toast.makeText(this,"Please choose only one gender...", Toast.LENGTH_SHORT).show();
}
else if(female.isChecked() && other.isChecked()){
Toast.makeText(this,"Please choose only one gender...", Toast.LENGTH_SHORT).show();
}
else{
loadingBar.setTitle("Creating New Account");
loadingBar.setMessage("Please wait, while we are creating your new Account...");
loadingBar.show();
loadingBar.setCanceledOnTouchOutside(true);
mAuth.createUserWithEmailAndPassword(email1, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
SaveAccountInformation();
Toast.makeText(RegisterActivity.this,"Your account was created please check your email for an activation mail", Toast.LENGTH_LONG).show();
loadingBar.dismiss();
SendUserToMainActivity();
}
else{
String message= task.getException().getMessage();
Toast.makeText(RegisterActivity.this, "Error Occured: " + message, Toast.LENGTH_LONG).show();
loadingBar.dismiss();
}
}
});
}
}
private void SaveAccountInformation() {
currentUserId = mAuth.getCurrentUser().getUid();
FirebaseFirestore db = FirebaseFirestore.getInstance();
String gender;
username = UserName.getText().toString();
String fullname = FullName.getText().toString();
String day = Day.getText().toString();
String month = Month.getText().toString();
String year = Year.getText().toString();
if(male.isChecked()) {
gender = "male";
} else if(female.isChecked()){
gender = "female";
} else {
gender = "other";
}
HashMap userMap = new HashMap();
userMap.put("username", username);
userMap.put("gender", gender);
userMap.put("fullname", fullname);
userMap.put("birthday", day+"/"+month+"/"+year);
userMap.put("uid", mAuth.getCurrentUser().getUid());
userMap.put("verified", "false");
db.collection("users")
.add(userMap)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
private void SendUserToMainActivity() {
Intent mainIntent = new Intent(RegisterActivity.this, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(mainIntent);
}
}