EDIT : Je viens de redémarrer Android Studio après avoir nettoyé le projet et invalidé le cache. Maintenant j'obtiens cette erreur -
E/StorageException: { "error": { "code": 403, "message":
"Permission denied. Could not perform this operation" }}
J'obtiens l'erreur suivante qui s'imprime à l'infini.
2020-09-27 17:00:32.931 11755-11863/com.example.XXXXXX E/StorageUtil : error getting token java.util.concurrent.ExecutionException : com.google.firebase.internal.api.FirebaseNoSignedInUserException : Veuillez vous connecter avant d'essayer d'obtenir un jeton.
Dans mon application j'ai créé l'utilisateur correctement, et FirebaseAuth.getInstance().getCurrentUser();
ne renvoie PAS la nullité. Mais si c'est le cas, je le traite en le connectant avec succès ou en créant un autre utilisateur. Mon application a maintenant plus de 160 utilisateurs créés, en moins d'une demi-journée. Je ne pense même pas avoir lancé l'application autant de fois pour la tester. Les options "Connexion par e-mail" et "Connexion anonyme" sont activées dans les paramètres d'authentification.
Le problème commence lorsque j'essaie d'accéder au stockage. J'obtiens l'erreur de jeton d'authentification mentionnée ci-dessus. Le dossier et le fichier existent et c'est de cette façon que j'essaie de télécharger les fichiers
fstore.child("gs://XXXXXX-XXXX.appspot.com/Books/XXXX").listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() {
@Override
public void onSuccess(ListResult listResult) {
for(StorageReference sref : listResult.getItems())
{
tempFilename = sref.getName();
File tmpFile = new File(tempSubDir, tempFilename);
try {
tmpFile.createNewFile();
sref.getFile(tmpFile).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(tabtwoactivity.this, "File download failed!", Toast.LENGTH_LONG).show();
System.out.println("ERROR: "+ e.toString());
}
});
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println("IIIIII: "+sref.getName());
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(tabtwoactivity.this, "Fetching Directory XXXXX Failed", Toast.LENGTH_LONG).show();
}
});
J'ai essayé d'utiliser fstore.child("XXXX").listAll()
mais cela m'a donné une avalanche d'erreurs différentes, principalement axées autour de Folder not found
. Mon stockage contient le dossier et les fichiers. J'ai même joué avec les règles de stockage - allow read, write;
, allow read, write: if request.auth!=null
, allow read, write: if request.auth==null
. Mais rien n'a fonctionné.
Qu'est-ce que je fais de mal ?