Einfache Verwendung der FCM V1-API in Python

Dec 05 2022
Hallo alle miteinander. Wie Sie bereits wissen, können Sie beim Erstellen eines neuen fcm-Projekts keine Legacy-API verwenden.

Hallo alle miteinander. Wie Sie bereits wissen, können Sie beim Erstellen eines neuen fcm-Projekts keine Legacy-API verwenden. Sie müssen nur die V1-API verwenden. Und es gibt keine detaillierte Dokumentation oder Artikel im Artikel, um dies auf kurze und bequeme Weise einzurichten. Nachdem ich viel gekämpft und das Projekt mit dieser neuen API abgeschlossen hatte, entschied ich mich, das SDK nicht zu verwenden, da es die JWT-Version verwendete, die mein Projekt nicht akzeptierte. Von nun an werden wir mit der API selbst auf rohe Weise fortfahren.

Konfigurationsdatei abrufen

Nachdem Sie Ihr FCM-Projekt erstellt haben, gehen Sie zu Ihren Projekteinstellungen und wählen Sie Dienstkonten, generieren Sie dann ein neues Schlüsselpaar und speichern Sie es auf Ihrer Plattform.

Nachdem Sie die JSON-Datei heruntergeladen haben, können Sie sie kopieren und in Ihrer Umgebung speichern, z. B. Vault. Verwenden Sie es dann zum Authentifizieren und Abrufen von Zugriffstoken von der FCM-API. Sie erhalten ein Zugriffstoken in den 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)