Je reçois une erreur lors de l'envoi du message avec Firebase
administrateur de messagerie en nuage API
.
Le message d'erreur est en dessous
Causée par: com.google.api.client.http.HttpResponseException: 400 requête incorrecte { "Erreur": { "code": 400, "message": "La requête contient un argument invalide.", "les erreurs": [ { "message": "La requête contient un argument invalide.", "domaine": "global", "raison": "badRequest" } ], "status": "INVALID_ARGUMENT" } }
Permettez-moi de mettre ma configuration d'administration ici ..
FileInputStream serviceAccount = new FileInputStream("My service accout file.json");
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://deliveryeat-1aa42.firebaseio.com").build();
FirebaseApp.initializeApp(options);
Le code d'envoi du message est ci-dessous
// This registration token comes from the client FCM SDKs.
String registrationToken = "YOUR_REGISTRATION_TOKEN";
// See documentation on defining a message payload.
Message message = Message.builder().putData("score", "850").putData("time", "2:45").setToken(registrationToken).build();
// Send a message to the device corresponding to the provided
// registration token.
String response = FirebaseMessaging.getInstance().sendAsync(message).get();
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
dépendances maven que j'utilise suit
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>5.9.0</version>
</dependency>
Alors, est-ce que quelqu'un peut m'aider? Qu'est-ce que je fais mal?
Je soupçonne que votre registrationToken
a un format invalide. Ce devrait être 152 caractères.
Pour confirmer cela, essayez de créer votre message avec setTopic ("test") au lieu de setToken(registrationToken)
.
Une des causes possibles est que le client et le serveur sont connectés à différents projets Firebase. Le nom du projet apparaît dans le fichier google-services.json sur le client et dans le json d'informations d'identification sur le serveur.
Dans mon cas, le problème était que certaines clés ne sont pas autorisées dans une charge utile de données de notification. Plus précisément, la clé "de" est interdite.