【发布时间】:2019-09-02 11:35:39
【问题描述】:
我有一个应用程序,它有很多用户,他们都存储在实时数据库中。我正在尝试通过单击按钮删除所有数据的用户,但删除后个人资料图片仍留在 Firebase 存储中。因此,当我尝试从 Firebase Storage 以及用户中删除图片时,我会收到此错误。 用户无权访问此对象。
所以我尝试在 ValueEventListener 方法中删除图片,因为我可以轻松地从我的实时数据库中获取 ImageURL。
实时数据库
在数据库中我有属性 profileimage: GeneratedPictureUrlWhenUploadingToStorage 我在 Firebase 存储中的图片也被命名为 currentUserId + ".JPG" 所以它就像一个 indetifer
存储规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
代码:
switch (view.getId()){
case R.id.buttonEditProfile:
startActivity(new Intent(this, ProfileEditActivity.class));
break;
case R.id.buttonUserList:
startActivity(new Intent(this, UserListActivity.class));
break;
case R.id.buttonDeleteAccount:
profileUserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
StorageReference storageReference1;
String myImage = dataSnapshot.child("profileimage").getValue().toString();
storageReference1 = FirebaseStorage.getInstance().getReferenceFromUrl(myImage);
storageReference1.delete();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
DatabaseReference drFailure = FirebaseDatabase.getInstance().getReference("failures").child(currentUserId);
DatabaseReference drVehicles = FirebaseDatabase.getInstance().getReference("vehicles").child(currentUserId);
DatabaseReference drUsers = FirebaseDatabase.getInstance().getReference("users").child(currentUserId);
FirebaseUser userDel = FirebaseAuth.getInstance().getCurrentUser();
drFailure.removeValue();
drVehicles.removeValue();
drUsers.removeValue();
userDel.delete();
当我按下按钮DeleteAccount时,我想删除存储的uniqe用户图片
【问题讨论】:
-
"使用
android-studio回答有关使用Android Studio 的问题。不要使用一般的Android 编程问题;而是使用android标签。"
标签: java android firebase firebase-storage