【发布时间】:2020-03-06 18:17:12
【问题描述】:
我正在开发一个需要用户注册/登录才能访问它的 Android 应用程序 (Android Studio)。我正在使用 firebase 来存储注册用户。目前,注册表格采用用户的电子邮件、密码和姓名,登录只需要电子邮件和密码。这是我的注册活动:
private void createUserAccount(final String email, final String name, String password) {
mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
showMessage("Account Created");
updateUserInfo(name, pickedImgUri,mAuth.getCurrentUser());
}
else{
showMessage("account_activity creation failed" + task.getException().getMessage());
regBtn.setVisibility(View.VISIBLE);
loadingProgress.setVisibility(View.INVISIBLE);
}
}
});
}
private void updateUserInfo(final String name, Uri pickedImgUri, final FirebaseUser currentUser) {
StorageReference mStorage = FirebaseStorage.getInstance().getReference().child("user_photos");
final StorageReference imageFilePath = mStorage.child(pickedImgUri.getLastPathSegment());
imageFilePath.putFile(pickedImgUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
imageFilePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
UserProfileChangeRequest profileUpdate = new UserProfileChangeRequest.Builder()
.setDisplayName(name)
.setPhotoUri(uri)
.build();
currentUser.updateProfile(profileUpdate)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
showMessage("Register complete");
UpdateUI();
}
}
});
}
});
}
});
}
如何添加用户名字段并使其对每个用户都是唯一的?是否可以让所有用户信息出现在 Firebase 数据库中而不是在身份验证下?
【问题讨论】:
标签: android firebase firebase-authentication