Bonjour,
ce message fait suite à un précédent sur une connexion impossible à Firebase.
J'ai créé un projet en suivant le tuto de graven sur du Kotlin.
J'ai trois fragment sur mon code, sur deux d'entre eux, j'arrive à interagir avec ma database Firebase mais sur la dernière qui me permet d'ajouter des éléments en base, j'ai une erreur.
A noter également que le formulaire me permet d'ajouter des photos sur le storage Firebase (via Bucket) et ça fonctionne. A chaque essai, bien que l'appli s'arrête une fois que j'appui sur le bouton "terminer" la photo est bien stocké mais les autres informations n'arrivent pas en base et j'ai les messages suivants
D/EGL_emulation: eglMakeCurrent: 0xe7a05600: ver 2 0 (tinfo 0xe7a03870)
E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.firebase.internal.api.FirebaseNoSignedInUserException: Please sign in before trying to get a token.
W/NetworkRequest: no auth token for request--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: fr.asmathvic.arakbet, PID: 4888
com.google.firebase.database.DatabaseException: Invalid Firebase Database path: https://firebasestorage.googleapis.c...0-74bf8cea7879. Firebase Database paths must not contain '.', '#', '$', '[', or ']'
at com.google.firebase.database.core.utilities.Validation.validatePathString(com.google.firebase:firebase-database@@19.2.1:45)
at com.google.firebase.database.DatabaseReference.child(com.google.firebase:firebase-database@@19.2.1:102)
at fr.asmathvic.arakbet.PlantRepository.insertPlant(PlantRepository.kt:94)
at fr.asmathvic.arakbet.fragments.AddPlantFragment$sendForm$1.invoke(AddPlantFragment.kt:71)
at fr.asmathvic.arakbet.fragments.AddPlantFragment$sendForm$1.invoke(AddPlantFragment.kt:52)
at fr.asmathvic.arakbet.PlantRepository.uploadImage$lambda-2(PlantRepository.kt:80)
at fr.asmathvic.arakbet.PlantRepository.$r8$lambda$IaW8al3iR-y22PA45nXW4WrV0QM(Unknown Source:0)
at fr.asmathvic.arakbet.PlantRepository$$ExternalSyntheticLambda1.onComplete(Unknown Source:2)
at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 4888 SIG: 9
Dans mon "PlantRepository" qui me permet d'intéragir avec la BDD, j'ai ces éléments.
Je débute dans le développement, j'aimerai vraiment comprendre ce qui ne fonctionne pas afin d'avancer sereinement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 class PlantRepository { // Donner le lien pour accéder au bucket private val BUCKET_URL: String ="gs://arXXXX-1932d.appspot.com" // Se connecter à notre espace de stockage val storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(BUCKET_URL) object Singleton{ // Se connecter à la reférence "plants" val databaseRef = FirebaseDatabase.getInstance("https://arXXXX-1932d-default-rtdb.firebaseio.com/").getReference("plants") // Créer une liste qui va contenir nos plantes val plantList = arrayListOf<PlantModel>() // Contenir le lien de l'image courante var downloadUri: Uri?=null } fun updateData(callback: () -> Unit){ // Absorber les données depuis la databaseRef pour les donner à notre liste de plantes databaseRef.addValueEventListener(object : ValueEventListener{ override fun onDataChange(p0: DataSnapshot) { //Retirer les ancienenes plantes plantList.clear() //Recolter la liste for (ds in p0.children) { //Construire un objet plante val plant = ds.getValue(PlantModel::class.java) //Vérifier que la plante n'est pas nulle if (plant != null) { //Ajouter la plante à la liste plantList.add(plant) } } //Actionner le Callback callback() } override fun onCancelled(p0: DatabaseError) {} }) } //Créer une fonction pour envoyer des fichiers sur le storage fun uploadImage(file:Uri, callback: () -> Unit){ //Vérifier que ce fichier ne soit pas null if (file != null){ val fileName = UUID.randomUUID().toString() + ".jpg" val ref = storageReference.child(fileName) val uploadTask = ref.putFile(file) // Demarer la tâche d'envoi uploadTask.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>>{ task -> // s'il y a eu un problème lors de l'envoi du fichier if (!task.isSuccessful){ task.exception?.let { throw it} } return@Continuation ref.downloadUrl }).addOnCompleteListener { task -> //Vérifier si tout a bien fonctionné if (task.isSuccessful){ //Récupére l'image downloadUri = task.result callback() } } } } //Mettre à jour un objet plante en bdd fun updatePlant(plant: PlantModel){ databaseRef.child(plant.id).setValue(plant) } //Inserer une nouvelle plante en BDD fun insertPlant(plant: PlantModel){ databaseRef.child(plant.id).setValue(plant) } //Supprimer une plante de la BDD fun deletePlant(plant: PlantModel) = databaseRef.child(plant.id).removeValue() }
Merci par avance, et hésitez pas à me demander des info complémentaires qui pourraient vous aider à analyser le problème.
Merci
Partager