Utiliser facilement l'API FCM V1 en Python

Dec 05 2022
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.

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)