2 votes

Android firebase lance une erreur d'authentification en essayant d'accéder au stockage

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 ?

1voto

Collez ceci dans votre google.json :

service firebase.storage {
  // The {bucket} wildcard indicates we match files in all storage buckets
  match /b/{bucket}/o {
    // Match filename
    match /filename {
      allow read: if true;
      allow write: if true;
    }
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X