gpt4 book ai didi

android - 如何向 Firebase 身份验证添加额外字段?年龄和性别

转载 作者:行者123 更新时间:2023-12-04 14:39:17 30 4
gpt4 key购买 nike

到目前为止,我对 印象深刻Firebase .但我想知道如何自定义我的用户电子邮件身份验证。我想添加以下字段:年龄 性别 供用户在注册时填写。

这是我的 SignUpActivity.java。

public class SignUpActivity extends AppCompatActivity {
private EditText inputEmail, inputPassword, signupInputUsername, signupInputAge;
private Button btnLinkLogin, btnSignUp, btnResetPassword;
private ProgressBar progressBar;
private FirebaseAuth auth;
private Spinner sexSpinner;
String defaultTextForSpinner = "Sex";
String[] arrayForSpinner = {"Male", "Female"};


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);

//Get Firebase auth instance
auth = FirebaseAuth.getInstance();

inputEmail = (EditText) findViewById(R.id.signup_input_email);
signupInputUsername = (EditText) findViewById(R.id.signup_input_username);
inputPassword = (EditText) findViewById(R.id.signup_input_password);
signupInputAge = (EditText) findViewById(R.id.signup_input_birthday);
sexSpinner = (Spinner)findViewById(R.id.spinner);
sexSpinner.setAdapter(new CustomSpinnerAdapter(this, R.layout.spinner_row, arrayForSpinner, defaultTextForSpinner));

btnSignUp = (Button) findViewById(R.id.btnSignUp2);
btnLinkLogin = (Button) findViewById(R.id.btnorlogin);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
EditText edittext = (EditText) findViewById(R.id.signup_input_birthday);


edittext.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//To show current date in the datepicker
Calendar mcurrentDate = Calendar.getInstance();
int mYear = mcurrentDate.get(Calendar.YEAR);
int mMonth = mcurrentDate.get(Calendar.MONTH);
int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);

DatePickerDialog mDatePicker=new DatePickerDialog(SignUpActivity.this, new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
// TODO Auto-generated method stub
/* Your code to get date and time */
}
},mYear, mMonth, mDay);
mDatePicker.setTitle("Select birthday");
mDatePicker.show(); }
});


btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

String email = inputEmail.getText().toString().trim();
String password = inputPassword.getText().toString().trim();

if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplicationContext(), "Enter email address.", Toast.LENGTH_SHORT).show();
return;
}

if (TextUtils.isEmpty(password)) {
Toast.makeText(getApplicationContext(), "Enter password.", Toast.LENGTH_SHORT).show();
return;
}

if (password.length() < 6) {
Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters.", Toast.LENGTH_SHORT).show();
return;
}

progressBar.setVisibility(View.VISIBLE);
//create user
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(SignUpActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(SignUpActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
startActivity(new Intent(SignUpActivity.this, MainActivity.class));
finish();
}
}
});

}
});
}

@Override
protected void onResume() {
super.onResume();
progressBar.setVisibility(View.GONE);
}

public class CustomSpinnerAdapter extends ArrayAdapter<String> {

Context context;
String[] objects;
String firstElement;
boolean isFirstTime;

public CustomSpinnerAdapter(Context context, int textViewResourceId, String[] objects, String defaultText) {
super(context, textViewResourceId, objects);
this.context = context;
this.objects = objects;
this.isFirstTime = true;
setDefaultText(defaultText);
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if(isFirstTime) {
objects[0] = firstElement;
isFirstTime = false;
}
return getCustomView(position, convertView, parent);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
notifyDataSetChanged();
return getCustomView(position, convertView, parent);
}

public void setDefaultText(String defaultText) {
this.firstElement = objects[0];
objects[0] = defaultText;
}

public View getCustomView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.spinner_row, parent, false);
TextView label = (TextView) row.findViewById(R.id.spinner_text);
label.setText(objects[position]);

return row;
}

}

最佳答案

当您使用带有用户名和密码的 Firebase 身份验证时,您在身份验证后可以获取的唯一数据是您从 FirebaseUser 获取的数据。目的。正如您可能看到的,还有一些方法可以帮助您更轻松地获取数据,例如:getEmail() , getDisplayName() , getPhotoUrl()等等。

不幸的是,您不能添加像 age 这样的额外数据。和 genderFirebaseUser目的。如果您想添加额外的数据,您需要为您的用户创建一个模型类,然后将其存储在您的 Firebase 数据库中。

您的模型类应如下所示:

public class User {
String name, gender, emailAddress;
int age;

public User(String name, String gender, String emailAddress, int age) {
this.name = name;
this.gender = gender;
this.emailAddress = emailAddress;
this.age = age;
}

public String getName() {return name;}
public void setName(String name) {this.name = name;}

public String getGender() {return gender;}
public void setGender(String gender) {this.gender = gender;}

public String getEmailAddress() {return emailAddress;}
public void setEmailAddress(String emailAddress) {this.emailAddress = emailAddress;}

public int getAge() {return age;}
public void setAge(int age) {this.age = age;}
}

关于android - 如何向 Firebase 身份验证添加额外字段?年龄和性别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47300716/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com