我一直在浏览Firebase文档,以及在stackoverflow,google和YouTube上搜索以下内容:
创建允许电子邮件,密码和 Profiles 照片的用户注册 .
我能够成功地为用户添加他们的电子邮件和密码,但我似乎无法获取其他信息(最重要的是 Profiles 照片) . 所有教程和文档都显示了某人(已登录)用户可以如何将照片上传到firebase,但不能将某人注册 . 有人可以帮忙,我怎样才能获得新用户上传的 Profiles 照片和名字/姓氏?
我正在使用FirebaseAuth添加用户 .
这是我到目前为止:
checkmarkImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
auth.createUserWithEmailAndPassword(emailET.getText().toString(), passwordET.getText().toString())
.addOnCompleteListener(RegisterActivity.this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
Toast.makeText(RegisterActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
//progressBar.setVisibility(View.GONE);
if (!task.isSuccessful()) {
Toast.makeText(RegisterActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {
startActivity(new Intent(RegisterActivity.this, HomeActivity.class));
finish();
}
}
});
}
});
uploadProfilePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
handleChooseImage(view);
}
});
}
//END OF onCreate
//Separate methods
//Actually opens the CameraRoll
public void handleChooseImage(View v) {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, SELECTED_PICTURE); //then goes to onActivityResult
}
public void handleInsertData(View v) {
}
public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch (requestCode) {
case 0:
if(requestCode == RESULT_OK) {
Log.i("RegisterActivity", "case 0");
}
break;
case 1:
if(resultCode == RESULT_OK) {
Uri selectedImage = imageReturnedIntent.getData();
Log.i("RegisterActivity", "selected image = " + selectedImage);
}
break;
}
}
}
3 回答
这可能有点晚了,但是对于其他来这里寻求可靠答案的人,我会告诉你我是如何做到的 .
我有一个POJO类CreatedUserDetail,带有电子邮件和照片字段 .
我还创建了一个User类:
}
如您所见,它具有RegisterUser功能,该功能首先使用给定的电子邮件和密码在Firebase身份验证中创建用户 . 注册后,我在Firebase数据库中创建了一个用户,其中包含电子邮件和LOCAL PATH照片 . 同时,它还会将照片上传到Firebase存储 . 最后,在完成上传后,我使用最近上传的照片的downloadUrl更新Firebase数据库节点 .
在活动中,我只是这样做:
就这样 . 您可以包含一个回调来显示Toast或重定向到另一个活动 .
您需要先注册,然后在存储中上传用户图像,这是标准方式 .
因为根据firebase存储默认规则
user != null
所以必须用户身份验证状态不为null,否则你可以将firebase规则更改为public(这不是更好)我希望这能帮到您 .
您可以上传图像,无论用户在firebase上注册,但是,当用户登录时,您需要用户引用来保存图像以便再次获取图像,如果用户是,则无法让用户参考尚未注册 . 说得通? :)