通过firebase auth添加图片和其他数据
Posted
技术标签:
【中文标题】通过firebase auth添加图片和其他数据【英文标题】:Add image and other data through firebase auth 【发布时间】:2019-04-07 08:05:43 【问题描述】:我想将所有用户信息存储到 firebase 并将电子邮件和密码传递给 firebase auth 并将图像插入到 firebase,但在这里我在 taskSnapshot.getDownloadUrl().toString()); 而且我也不确定这是否是将用户电子邮件和密码传递给 firebase auth 的正确方法
public void AddUser(final String UserEmail, final String Username, final String Password, final String PhoneNumber, final String confirmPassword, final String Address)
//first we encode the email into "," to enable check the firebase database
String email = UserEmail.replace(".", ",");
Userdatabase = FirebaseDatabase.getInstance().getReference("User").child(email);
Log.d("UserEmail", Userdatabase.toString());
Userdatabase.addListenerForSingleValueEvent(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
if (dataSnapshot.exists())
String value = dataSnapshot.getValue(String.class);
Log.i(TAG, "UserEmail : " + value + " Had Already Exist");
Toasty.warning(getApplicationContext(), "The Email you use already Exist !", Toast.LENGTH_SHORT, true).show();
return;
if (!dataSnapshot.exists())
if (imageUri != null)
StorageReference fileReference = storageReference.child(System.currentTimeMillis()
+ "." + getFileExtension(imageUri));
mUploadTask = fileReference.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
Handler handler = new Handler();
handler.postDelayed(new Runnable()
@Override
public void run()
, 500);
Toast.makeText(Signup.this, "Register successful", Toast.LENGTH_LONG).show();
final User user = new User(Address, confirmPassword, UserEmail, Password, PhoneNumber, Username,
taskSnapshot.getDownloadUrl().toString());
Userdatabase.setValue(user);
);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
return;
);
firebaseAuth.createUserWithEmailAndPassword(UserEmail, Password).addOnCompleteListener(new OnCompleteListener<AuthResult>()
@Override
public void onComplete(@NonNull Task<AuthResult> task)
progressDialog.dismiss();
if (!task.isSuccessful())
Log.i(TAG, "Buyer FirebaseAuth Register : Fail");
Toasty.error(getApplicationContext(), "The Email you use already Exist !", Toast.LENGTH_SHORT, true).show();
else
Log.i(TAG, "Buyer FirebaseAuth Register : Success");
UserEmail.replace(".", ",");
final User user = new User(Address, confirmPassword, UserEmail, Password, PhoneNumber, Username);
Userdatabase.addListenerForSingleValueEvent(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
if (!dataSnapshot.exists())
Userdatabase.setValue(user);
Log.i(TAG, "FirebaseDatabase Add Buyer : Success");
Toasty.success(getApplicationContext(), "Register Complete", Toast.LENGTH_SHORT, true).show();
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
Log.w(TAG, "Database Error");
);
);
【问题讨论】:
如果您需要更多代码,请告诉我 【参考方案1】:这里是问题taskSnapshot.getDownloadUrl().toString()
最新的 Firebase 库通过在 asychronous task
中调用上传引用来提供下载 url
这是完整的代码
私有字符串链接;
mUploadTask = fileReference.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
@Override
public void onSuccess(Uri downloadUri)
link = downloadUri.toString;
Toast.makeText(Signup.this, "Register successful", Toast.LENGTH_LONG).show();
final User user = new User(Address, confirmPassword, UserEmail, Password, PhoneNumber, Username,
link));
Userdatabase.setValue(user);
);
);
【讨论】:
sry,我没听懂你,你能创建一个聊天室吗? 字符串链接 = uri.toString; uri 找不到符号 在对象类中我还需要再创建一个构造函数吗? @Choy,对不起,它的 downloadUri.toString, 好的@Choy,考虑投票并将其标记为帮助其他用户的正确答案。很高兴我帮助了以上是关于通过firebase auth添加图片和其他数据的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Auth (android) 后在数据库中创建用户
如何在 Flutter 中使用 Firebase Auth 和 Firestore
如何观察 firebase.auth().currentUser.displayName 和其他属性的变化?