Dễ dàng sử dụng API FCM V1 trong Python
Nè mọi người. Như bạn đã biết, khi tạo một dự án fcm mới, bạn không thể sử dụng API kế thừa. Bạn chỉ phải sử dụng API V1. Và nó không có tài liệu chi tiết hoặc bài viết trong bài viết để thiết lập điều này một cách ngắn gọn và thuận tiện. Nên sau khi loay hoay mãi cũng xong project với API mới này, mình quyết định không dùng SDK vì nó đang dùng phiên bản JWT mà project của mình không chấp nhận. Vì vậy, từ bây giờ, chúng tôi sẽ tiếp tục với chính API theo cách thô sơ.
Nhận tệp cấu hình
Sau khi tạo Dự án FCM, hãy chuyển đến cài đặt Dự án và chọn Tài khoản dịch vụ, sau đó tạo cặp khóa mới và lưu trữ trong nền tảng của bạn.
Sau khi tải xuống tệp JSON, bạn có thể sao chép và lưu trữ tệp đó trong môi trường của mình, chẳng hạn như Vault. Sau đó, sử dụng nó để xác thực và nhận mã thông báo truy cập từ FCM API. Bạn nhận được mã thông báo truy cập trong mã.
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)

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































