我一直在四处寻找一些问题,但没有弄清楚我做错了什么。
现在,这是一件奇怪的事情,我正在用电子邮件和密码提供商进行身份验证,但奇怪的是,代码将我的图像上传到存储,但不断循环,将下载链接放在我的数据库中,然后只给我这个错误:
E/StorageException:发生了StorageException。
用户没有访问此对象的权限。
现在,我已经检查了我的规则,因为我的认证,我尝试了这两个没有任何成功
service firebase.storage {
match /b/my-bucket.appspot.com/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
现在我也试过了
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}
仍然有同样的问题。
public void cargarProductoFirebase(final String nombreProducto, final float precioProducto, final Dialog dialog, final ProgressDialog progressDialog, Uri filePath) {
mStorageReference.child("fotos").child(mAuth.getCurrentUser().getUid()).child(filePath.getLastPathSegment()).putFile(filePath).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return mStorageReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
Map<String, Object> producto = new HashMap<>();
producto.put("nombreProducto", nombreProducto);
producto.put("precioProducto", precioProducto);
producto.put("imagen",downloadUri.toString());
mDatabase.child("Usuarios").child(mAuth.getCurrentUser().getUid()).child("productos").push().updateChildren(producto).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
dialog.dismiss();
progressDialog.dismiss();
Toast.makeText(mContext, "Se cargo el producto correctamente.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(mContext, "Error al cargar el producto" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
} else {
Toast.makeText(mContext, "upload failed: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
}
2018-10-09 20:32:49.442 9767-9821/com.example.macbook.firebasemvp
E/StorageException:发生了StorageException。
代码:-13021 HttpResult:403 2018-10-09 20:32:49.443 9767-9821/com.example.macbook.firebasemvp E/StorageException:{
“error”:{“code”:403,“message”:“开发人员凭据”
java.io.IOException:{“error”:{“code”:403,“message”:“需要开发人员凭据。”}}
在com.google.firebase.storage.obfuscated.zzj.zza(com.google。firebase:firebase-storage@@16.0.2:3435)
在com.google.firebase.storage.obfuscated.zzc.zza(com.google。firebase:firebase-storage@@16.0.2:65)
在com.google.firebase.storage.zzc.run(com.google。firebase:firebase-storage@@16.0.2:68)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor。java:1162)
在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor。java:636)
在java.lang.Thread.run(线程。java:764)
文件也被上传到正确的地方,但错误仍然存在,无法将下载的URL放到数据库中
我缩小了代码,删除了数据库部分,但仍然存在相同的问题
public void cargarProductoFirebase(final String nombreProducto, final float precioProducto, final Dialog dialog, final ProgressDialog progressDialog, Uri filePath) {
mStorageReference.child("fotos").child(mAuth.getCurrentUser().getUid()).child(filePath.getLastPathSegment()).putFile(filePath).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
return mStorageReference.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
Uri downloadUri = task.getResult();
Log.e(TAG, "onComplete: Success " );
} else {
Toast.makeText(mContext, "upload failed: " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
图片:
而且,没有
addOnProgressUpdate