J'essaie d'utiliser Postman pour envoyer une seule notification push à l'aide du service de messagerie en nuage Firebase
.
Il s'agit d'une commande cURL
qui fonctionne pour le même but, sur lequel j'utilise comme référence.
curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"body\":\"Firebase\"} \"priority":\"10"}"
Ce que j'ai fait jusqu'à présent ..
1 - Définissez les en-têtes de manière appropriée
2- À Body, j'utilise raw
{
"to" : "<YOUR_DEVICE_ID_TOKEN>"
,
"notification": {
"body": "Firebase Cloud Message"
}
}
Lors de l'exécution, je récupère 401 - Unauthorized
.
Que manque-t-il pour envoyer correctement la notification Push?
La manière correcte de configurer la clé Authorization
à Header est la suivante:
key=<API_ACCESS_KEY>
et pas seulement
<API_ACCESS_KEY>
Silly erreur, mais puisque cela pourrait être utile pour quelqu'un de tester Firebase Messaging avec Postman, je laisse la question ouverte.
Comptabilisation de la FCM via POSTMAN
Body - to est un identifiant de jeton (doit être généré via un jeton d'instance). écrire un corps dans une application binaire brute/json
{
"to": "cpa8cZPjq-w:APA91bF122f1Rnhu9v47bL
YMajaNTHAIU5SzItDwTy9o2MCIveG0PlK78VPvp3d
CqjwnUKZ4
ngi1trSyM3_aXttW62iknFfbPGtjRLhZr6wq-3qFdboz8gzdOGPz**********",
"notification": {
"body": "Hello",
"title": "This is test message."
}
}
en-tête: devrait avoir l'autorisation: clé du serveur
Type de contenu: application/json après avoir posté ici le message de réussite:
Pour la nouvelle API FCM HTTP v1, la méthode de test des notifications Push via Postman a été modifiée et les solutions existantes ne prennent en compte que la méthode traditionnelle de test des notifications Push: https://firebase.google.com/docs/cloud-messaging/ envoyer le message
Pour tester sur Postman avec l'API FCM HTTP v1, vous devez d'abord récupérer un jeton de courte durée Oauth 2. Vous pouvez en générer un conformément aux informations sur le site Firebase ici: https://firebase.google.com/docs/cloud-messaging/auth-server
J'ai généré le mien en utilisant Python en utilisant le code ci-dessous - n'oubliez pas d'installer le paquet à la pépine afin de pouvoir importer le paquet dans votre code avec succès:
from oauth2client.service_account import ServiceAccountCredentials
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', FCM_SCOPE)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
Une fois que vous avez le jeton - vous pouvez l'insérer dans votre Postman sous autorisation:
IMPORTANT:
Dans mon cas, j'avais un peu de difficulté à faire en sorte que cela fonctionne car j'essayais de tester une tâche planifiée qui allait envoyer une notification Push toutes les quelques minutes à FCM . J'avais imprimé le jeton dans mes journaux, puis pris ce jeton à mon Postman pour le test, ne réalisant pas qu'il a déjà été utilisé dans les appels planifiés à FCM.
Dans ce cas, puisqu'il a déjà été utilisé, le jeton ne sera plus valide et mes tests Postman ont tous échoué. Dans ce cas, vous devrez générer de nouveaux jetons pour vos tests Postman.
Assurez-vous d'inclure l'en-tête content-type: application/json
il échoue avec une erreur trompeuse si vous n'incluez pas l'en-tête de type de contenu disant: Error = MissingRegistration
Avez-vous vérifié ceci: Testez la notification FCM avec POSTMAN!
Remarque: Firebase a mis à niveau nos clés de serveur vers une nouvelle version. Tu peux continuez à utiliser votre clé de serveur Legacy, mais il est recommandé de vous passer à la version la plus récente.
Ajouter l'autorisation d'en-tête: key=<legacy_server_key>
OR Authorization: key=<server_key>
et Content-Type: application/json.
Sélectionnez maintenant Body> raw> JSON (application/json) et ajoutez le code suivant:
{
"to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
"collapse_key" : "type_a",
"notification" : {
"body" : "Body of Your Notification",
"title": "Title of Your Notification"
},
"data" : {
"body" : "Body of Your Notification in Data",
"title": "Title of Your Notification in Title",
"key_1" : "Value for key_1",
"key_2" : "Value for key_2"
}
}
J'ai créé POSTMAN Collection pour vous, Run in Postman directement.
J'espère que ça vous aidera.