Menggunakan FCM V1 API dengan Python dengan mudah

Dec 05 2022
Hai semuanya. Seperti yang Anda ketahui lagi saat membuat proyek fcm baru, Anda tidak dapat menggunakan API lama.

Hai semuanya. Seperti yang Anda ketahui lagi saat membuat proyek fcm baru, Anda tidak dapat menggunakan API lama. Anda hanya perlu menggunakan API V1. Dan itu tidak memiliki dokumentasi atau artikel terperinci dalam artikel untuk mengaturnya dengan cara yang singkat dan nyaman. Jadi setelah banyak berjuang dan menyelesaikan proyek dengan API baru ini, saya memutuskan untuk tidak menggunakan SDK karena menggunakan versi JWT yang tidak diterima oleh proyek saya. Jadi mulai sekarang, Kami akan melanjutkan dengan API itu sendiri secara mentah.

Dapatkan File Konfigurasi

Setelah membuat Proyek FCM, buka pengaturan Proyek dan pilih Akun layanan, lalu buat pasangan kunci baru dan simpan di platform Anda.

Setelah mengunduh file JSON, Anda dapat menyalin dan menyimpannya di lingkungan Anda misalnya Vault. Kemudian gunakan untuk mengautentikasi dan mendapatkan token akses dari FCM API. Anda mendapatkan token akses dalam kode.

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)