android - auth - firebase token expiration
Error de Autenticación de Token de Firebase (5)
Estaba enfrentando el mismo problema y fue causado porque, de manera predeterminada, firebase solo permitirá cargar archivos de usuarios que se hayan autenticado.
Por encima de la excepción de la utilidad de almacenamiento, puede haber un registro similar a este:
E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzajb: Please sign in before trying to get a token.
Tuvimos nuestro propio proceso de autenticación sin usar firebase, así que decidimos cambiar las reglas de almacenamiento en la consola de Firebase.
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
Nota: El cambio de las reglas permitirá a cualquier usuario subir archivos a su servidor en la nube de firebase.
Estoy utilizando el almacenamiento de Firebase para subir archivos, pero cuando lo cargo recibo este error
E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzand: Please sign in before trying to get a token.
¡Lo busqué en Google pero no pude obtener una respuesta! He iniciado sesión, en firebase.
Podría ser algo tan simple como la conexión a Internet, es decir, si todo tu código es correcto y has autenticado a todos los usuarios en firebase.
Creo que no firmaste antes de subir archivos. En onCreate () de actividad de iniciador, pruebe este código
FirebaseAuth mAuth = FirebaseAuth.getInstance();
Luego en onStart (),
FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
// do your stuff
} else {
signInAnonymously();
}
Iniciar sesión en forma anónima()
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);
}
});
}
Esto puede resolver su problema
Los siguientes pasos me funcionaron:
Generado correctamente google-services.json de firebase con el ID del paquete
En build.gradle (aplicación)
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'' }
Asegúrese de agregar dependencias a continuación en build.gradle (carpeta raíz del proyecto)
dependencies { classpath ''com.android.tools.build:gradle:2.2.3'' classpath ''com.google.gms:google-services:3.0.0'' }
Al descargar el archivo en su actividad agregue el siguiente código:
almacenamiento privadoReferencia de almacenamientoRef;
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()); } }
Tal vez simplemente no puedes "comenzar" con Firebase. Lo digo porque creo un proyecto, conéctese al almacenamiento de Firebase con Android Studio IDE, pero tengo que "comenzar" manualmente en la consola.