Usando la API FCM V1 en Python fácilmente
Hola a todos. Como ya sabe, cuando crea un nuevo proyecto de fcm, no puede usar la API heredada. Solo tienes que usar la API V1. Y no tiene documentación detallada o artículo en el artículo para configurar esto de una manera breve y conveniente. Entonces, después de luchar mucho y terminar el proyecto con esta nueva API, decidí no usar SDK porque estaba usando la versión JWT que mi proyecto no aceptaba. Así que a partir de ahora, continuaremos con la propia API de forma cruda.
Obtener archivo de configuración
Después de crear su proyecto FCM, vaya a la configuración de su proyecto y elija Cuentas de servicio, luego genere un nuevo par de claves y guárdelo en su plataforma.
Después de descargar el archivo JSON, puede copiarlo y almacenarlo en su entorno, por ejemplo, Vault. Luego, utilícelo para autenticar y obtener tokens de acceso de la API de FCM. Obtienes un token de acceso en los códigos.
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)

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































