Aide à la migration firebase FCM ver HTTP v1
CR16_Padawan Messages postés 61 Date d'inscription mercredi 7 juin 2023 Statut Membre Dernière intervention 22 septembre 2024 - 22 sept. 2024 à 09:02
3 réponses
18 sept. 2024 à 16:18
Bonjour Bruno,
merci pour ce lien il m'apporte beaucoup de réponses.
Je reviendrais faire un point sur mon avancement.
Cordialement
11 sept. 2024 à 20:11
bonjour,
bon, après beaucoup de tentatives j'ai obtenu ce code:
public void sendPushNotification(String fcmToken, String title, String body, String accessToken) { try { URL url = new URL("https://fcm.googleapis.com/fcm/send"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Authorization", "Bearer " + accessToken); conn.setRequestProperty("Content-Type", "application/json"); conn.setDoOutput(true); JSONObject message = new JSONObject(); message.put("to", fcmToken); JSONObject notification = new JSONObject(); notification.put("title", title); notification.put("body", body); message.put("notification", notification); OutputStream os = conn.getOutputStream(); os.write(message.toString().getBytes("UTF-8")); os.close(); InputStream is = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String response; StringBuilder sb = new StringBuilder(); while ((response = br.readLine()) != null) { sb.append(response); } br.close(); Log.d("FCM", "Response: " + sb.toString()); } catch (Exception e) { Log.e("FCM", "Error sending push notification", e); } }
toutefois pour l'essayer il me faut le jeton d'accès (accessToken) et je n'arrive pas à l'obtenir.
Si quelqu'un a une idée?
cordialement
13 sept. 2024 à 09:08
Hello,
J'ai trouvé ce guide qui pourrait t'aider je pense:
https://firebase.google.com/codelabs/use-the-fcm-http-v1-api-with-oauth-2-access-tokens?hl=fr#0
21 sept. 2024 à 16:21
Bonjour,
je parviens à obtenir un token mais il n'a pas l'air d'étre bien formaté
ya29.c.c0ASRK0GZgXxYMXo3CAY95E-nT4aHKhn4g_NUb91eZ5cjFYXxCc0vf6V23x_JFdRZ41no5XRiJIKTrZxQRHejAwvgKpNBJG7CSKnyOQKNreWuewu_x0zCBJwEaPu4b[...]uJk-rRJucya8-yW043pzVnizV8bZOQm8zW4Fok-bX7-SlJbtS9c289QyczYjSczbSeSIX33MIl3VqaMzer-tg122sjojrjatSlgzxstMXmkoJu7pdaxhIBtZ_oxh4U1q16wxfqBVkaoj9FR6phYsRbfn0rMVQuIo6JM77f5XUjddMIWhx84gyRSI-Vydq5tr
il devrait ressembler plus ou moins a ça:
ya29.c0ASRK0GZgXxYMXo3CAY95E-nT4aHKhn4g_NUb91eZ5cjFYXxCc0vf6V23x_JFdRZ41no5XRiJIKTrZxQRHejAwvgKpNBJG7CSKnyOQKNreWuewu_x0zCBJwEaPu4bCPNDKo5oXJntf3tuYybde1mvfP7-AFkeYJf80mSrOXdr-0grFe95ReLVKUUg9cVUtCfGZoXu1PwZFQ86KnjcFgn2S8-4s4[...]WxlbueSaiVI38VI99o6Jyc6voocboRt3oR5tdcjnaZUVZSYrqlouUeQiWhVZor-Jqw6r2QxaZB9fFuJk-rRJucya8-yW043pzVnizV8bZOQm8zW4Fok-bX7-SlJbtS9c289QyczYjSczbSeSIX33MIl3VqaMzer-tg122sjojrjatSlgzxstMXmkoJu7pdaxhIBtZ_oxh4U1q16wxfqBVkaoj9FR6phYsRbfn0rMVQuIo6JM77f5XUjddMIWhx84gyRSI-Vydq5tr
La différence entre les deux se trouve au début du token
j'utilise ce code pour l'obtenir
try { String jsonString = "{\n" + " \"type\": \"service_account\",\n" + " \"project_id\": \"***\",\n" + " \"private_key_id\": \"***\",\n" + " \"private_key\": \"-----BEGIN PRIVATE KEY-----\\***\\n-----END PRIVATE KEY-----\\n\",\n" + " \"client_email\": \"***@***\",\n" + " \"client_id\": \"***\",\n" + " \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n" + " \"token_uri\": \"https://oauth2.googleapis.com/token\",\n" + " \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n" + " \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-yyy%40xxx.iam.gserviceaccount.com\",\n" + " \"universe_domain\": \"googleapis.com\"\n" + "}\n"; InputStream stream = new ByteArrayInputStream(jsonString.getBytes(StandardCharsets.UTF_8)); GoogleCredentials googleCredentials = GoogleCredentials.fromStream(stream).createScoped(Lists.newArrayList(firebaseMessagingScope)); googleCredentials.refresh(); Log.d("Token","json Google credentials: " + googleCredentials.getAccessToken().getTokenValue()); return googleCredentials.getAccessToken().getTokenValue();
J'ai testé différentes méthodes mais pas de résultat.
J'ai raté un truc c'est sûr mais quoi?
cordialement
22 sept. 2024 à 09:02
Re,
finalement ça fonctionne. je ne saurais expliquer pourquoi car j'ai bidouillé un peu à gauche, à droite sur mon programme et firebase donc pas d'idée précise pour la résolution.
Maintenant reste plus pour moi qu'à comprendre pourquoi mes notifications ne s'affichent pas avec les caractéristiques spécifiées dans mon code lors de la réception d'une notification.
Si une petite idée de votre part passe par là je suis preneur.
merci pour les renseignements et les enseignements;
Cordialement.
CR16_Padawan