Я пытаюсь загрузить изображение из внутреннего хранилища в мое хранилище Firebase и получить его DownloadUrl, чтобы связать его в моей базе данных в реальном времени. Изображение загружено, ссылка сохраняется в хранилище, но во время выполнения я получаю эту ошибку много раз;
E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.internal.api.FirebaseNoSignedInUserException: Please sign in before trying to get a token.
W/NetworkRequest: no auth token for request
сразу после загрузки изображения и URL-адреса у меня было это
Editar_Platillo_Menu.this.finish();
Чтобы закрыть всплывающее окно, поскольку оно выполняет свою функцию, но я заметил, что ошибка появлялась много раз, а затем, когда всплывающее окно закрывает все сбои приложения. Я подтвердил странное поведение, когда прокомментировал строку кода finish();
и ошибка просто зациклилась бесконечно.
Кроме того, я не использую Firebase Authentificaton, вот мои правила хранения Firebase:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
// Allow access by all users
allow read, write;
}
}
}
вот мой код для загрузки в Storage / RTDatabase:
StorageReference filereference = STRef.child(System.currentTimeMillis() + "." + getFileExt(Img));
filereference.putFile(Img).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Progress = false;
Toast.makeText(Editar_Platillo_Menu.this, "Listo.", Toast.LENGTH_LONG).show();
Task<Uri> result = taskSnapshot.getStorage().getDownloadUrl();
result.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
DBRef.child(i.getStringExtra(Adapter_Menu_Admins.EXTRA_IDPLATILLO_Edit)).child("Imagen").setValue(uri.toString());
}
});
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Progress = false;
Toast.makeText(Editar_Platillo_Menu.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
Progress = true;
}
});
Это всплывающее окно появляется после того, как вы нажмете кнопку в представлении рециркулятора, которое использует базу данных realtimedatabase для показа изображений, связанных с данными (через свой URL) , я думаю, что это может быть связано с аварийным завершением приложения, но я больше ничего не вижу, мог бы использовать некоторую помощь.
Я видел, что все связывают эту проблему с правилами хранения, но я считаю, что полностью открыт, поэтому я не знаю, что происходит.