Я пытаюсь позвонить на сторону сервера POST => https://iid.googleapis.com/v1/web/iid
оконечной точки.Большинство API Firebase используют ключ доступа к серверу для авторизации запросов, но эта конечная точка использует OAuth2.У меня проблемы с настройкой работы с OAuth2.
Откуда берется Crypto-Key
?Документация помечает это как APPLICATION_PUBLIC_KEY
- какое приложение?Где я могу найти это?В консоли FCM нет ничего похожего на приведенный пример.
Вот моя попытка -
from requests import request
from google.auth.transport import requests as google_requests
from google.oauth2 import service_account
_request = google_requests.Request()
# Get access token
creds = service_account.Credentials\
.from_service_account_info(fcm_credentials_json, scopes=['https://www.googleapis.com/auth/firebase.messaging',
'https://www.googleapis.com/auth/firebase'])
creds.refresh(_request)
access_token = creds.token
# Build headers/body
headers = {
'Authorization': f'Bearer {access_token}',
'Crypto-Key': f'p256ecdsa={app_public_key}',
'Content-Type': 'application/json'
}
body = {
"endpoint": "https://fcm.googleapis.com/fcm/send/fa9poLC00i0:APA91bHA...lnQ_SuwH-B_odM",
"keys": {
"p256dh": "BHz0KeciXJ...oE2yBqBc",
"auth": "Cmchq...SG6g"
}
}
# Make HTTP Request
res = request(
method='POST',
url='https://iid.googleapis.com/v1/web/iid',
json=body,
headers=headers
)
print(res.reason)
print(res.content)
Результат:
Несанкционированный
{"error": {"code": 401, "message": "В запросе отсутствуют необходимые учетные данные для проверки подлинности. Ожидаемый токен доступа OAuth 2, cookie для входа в систему или другие действительные учетные данные для проверки подлинности. См. https://developers.google.com/identity/sign-in/web/devconsole-project."," status ": "НЕАУТЕНТИФИЦИРОВАНО"}}