Łatwe korzystanie z interfejsu API FCM V1 w Pythonie
Hej wszystkim. Jak już wiesz, podczas tworzenia nowego projektu fcm nie możesz używać starszego interfejsu API. Musisz tylko użyć API V1. I nie ma szczegółowej dokumentacji ani artykułu w artykule, aby skonfigurować to w krótki i wygodny sposób. Po wielu zmaganiach i ukończeniu projektu z tym nowym interfejsem API zdecydowałem się nie używać SDK, ponieważ korzystał on z wersji JWT, której mój projekt nie akceptował. Więc od teraz będziemy kontynuować samo API w surowy sposób.
Pobierz plik konfiguracyjny
Po utworzeniu projektu FCM przejdź do ustawień projektu i wybierz konta usług, a następnie wygeneruj nową parę kluczy i zapisz ją na swojej platformie.
Po pobraniu pliku JSON możesz go skopiować i przechowywać w swoim środowisku np. Vault. Następnie użyj go do uwierzytelnienia i uzyskania tokenów dostępu z interfejsu API FCM. W kodach otrzymujesz token dostępu.
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)

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































