Utiliser facilement l'API FCM V1 en Python
Salut tout le monde. Comme vous le savez plus, lorsque vous créez un nouveau projet fcm, vous ne pouvez pas utiliser l'ancienne API. Vous n'avez qu'à utiliser l'API V1. Et il n'y a pas de documentation détaillée ou d'article dans l'article pour le configurer de manière courte et pratique. Donc, après avoir beaucoup lutté et terminé le projet avec cette nouvelle API, j'ai décidé de ne pas utiliser le SDK car il utilisait la version JWT que mon projet n'acceptait pas. Donc à partir de maintenant, nous continuerons avec l'API elle-même de manière brute.
Obtenir le fichier de configuration
Après avoir créé votre projet FCM, accédez aux paramètres de votre projet et choisissez Comptes de service, puis générez une nouvelle paire de clés et stockez-la sur votre plateforme.
Après avoir téléchargé le fichier JSON, vous pouvez le copier et le stocker dans votre environnement, par exemple Vault. Utilisez-le ensuite pour vous authentifier et obtenir des jetons d'accès à partir de l'API FCM. Vous obtenez un jeton d'accès dans les codes.
creds = {} # Your credentials dict that you installed above
scopes = ['https://www.googleapis.com/auth/firebase.messaging']
cred_service = ServiceAccountCredentials.from_json_keyfile_dict(creds, scopes)
access_token = cred_service.get_access_token().access_token
headers = {
'access_token_auth':'true',
'Authorization':f'Bearer {access_token}'
}
# For subscribing to topic
response = requests.post('https://iid.googleapis.com/iid/v1:batchAdd',headers=headers,
json={
"to":f"/topics/your_topic",
"registration_tokens":[user_fcm_token]
}
)
# For unsubscribing from topic
response = requests.post('https://iid.googleapis.com/iid/v1:batchRemove',headers=headers,
json={
"to":f"/topics/your_topic",
"registration_tokens":[user_fcm_token]
}
)
# project_id is in credentials file you have downloaded
base_url = f'https://fcm.googleapis.com/v1/projects/{project_id}/messages:send'
headers = {'Authorization': 'Bearer ' + access_token}
data = {
"message": {
"topic": f'user_push_{topic}',
"notification": {
"title": title,
"body": description
},
"webpush": {
"fcm_options": {
"link": url
}
},
"data": {}
}
}
resp = requests.post(base_url, json=data, headers=headers)
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































