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.
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
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.
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.
Les étapes ci-dessous ont fonctionné pour moi:
Généré le bon google-services.json à partir de firebase avec l'ID de paquet
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'
}
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'
}
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());
}
}
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.