web-dev-qa-db-fra.com

Erreur d'authentification de jeton Firebase

J'utilise un stockage firebase pour télécharger des fichiers, mais cette erreur m'obtient

E/StorageUtil: error getting token Java.util.concurrent.ExecutionException: com.google.Android.gms.internal.zzand: Please sign in before trying to get a token.

Je l'ai googlé mais je n'ai pas pu obtenir de réponse! Je me suis connecté, dans firebase.

11
Chatrapati Shiva

Je pense que vous n'avez pas signé avant de télécharger des fichiers. Dans onCreate () de l'activité du lanceur, essayez ce code

FirebaseAuth mAuth = FirebaseAuth.getInstance(); 

Puis dans onStart (), 

FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
  // do your stuff
} else {
  signInAnonymously();
}

signInAnonymously ()

private void signInAnonymously() {
    mAuth.signInAnonymously().addOnSuccessListener(this, new  OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                // do your stuff
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                Log.e(TAG, "signInAnonymously:FAILURE", exception);
            }
        });
}

Cela peut résoudre votre problème

12
SmartAndroidian

Je faisais face au même problème et cela était dû au fait que par défaut, Firebase n'autorise le téléchargement que des fichiers provenant d'utilisateurs authentifiés.

Au-dessus de l'exception d'utilitaire de stockage, il peut exister un journal similaire à ceci:

E/StorageUtil: error getting token Java.util.concurrent.ExecutionException: com.google.Android.gms.internal.zzajb: Please sign in before trying to get a token.

Nous avions notre propre processus d'authentification sans utiliser firebase, nous avons donc décidé de modifier les règles de stockage dans la console firebase.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
    allow read, write;
    }
  }
}

Remarque: La modification des règles permet à tout utilisateur de télécharger des fichiers sur votre serveur cloud Firebase.

3
Illegal Argument

Peut-être que vous ne pouvez tout simplement pas "démarrer" dans Firebase. Je dis cela parce que j'ai créé un projet, connectez-vous au stockage firebase d'Android Studio IDE, mais je dois "démarrer" manuellement sur la console.

1
Rodrigo Moraes

Les étapes ci-dessous ont fonctionné pour moi:

  1. Généré le bon google-services.json à partir de firebase avec l'ID de paquet

  2. Dans build.gradle (app)

     dependencies {
    
     compile 'com.google.firebase:firebase-storage:10.2.0'
     compile 'com.google.firebase:firebase-auth:10.2.0'
     compile 'com.google.firebase:firebase-core:10.2.0'
     compile 'com.google.firebase:firebase-database:10.2.0'
     compile 'com.firebase:firebase-client-Android:2.4.0'
     }
    
  3. Assurez-vous d’ajouter les dépendances ci-dessous dans build.gradle (dossier racine du projet).

    dependencies {
    
    classpath 'com.Android.tools.build:gradle:2.2.3'
    classpath 'com.google.gms:google-services:3.0.0'
    
    }
    
  4. Lors du téléchargement du fichier dans votre activité, ajoutez le code suivant:

    // Declaration reference
    private StorageReference storageRef;
    
    
    private void downloadImageFromFireBase()
    {
    showProgressDialog("Downloading image..");
    
    storageRef = storage.getReferenceFromUrl("gs://XXX.appspot.com/").child("av"+ datePassed +".jpg");
    showImageFromFireBaseDataBase();
    }
    
    private void showImageFromFireBaseDataBase()
    {
        try {
            final File localFile = File.createTempFile("images", "jpg");
            final Bitmap[] bitmap = new Bitmap[1];
                storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                        Log.e("Test", "success!");
                        bitmap[0] = BitmapFactory.decodeFile(localFile.getAbsolutePath());
                        raysImage.setImageBitmap(bitmap[0]);
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        Log.e("Test", "fail :( " + exception.getMessage());
                    }
                });
            }catch(IOException e){
            Log.e("ImageView",e.toString());
            }
        }
    
1
Sanjay Mallur

Cela pourrait être aussi simple qu'une connexion Internet, c'est-à-dire si tout votre code est correct et que vous avez authentifié tous les utilisateurs sur firebase.

0
liam