Проблема с получением идентификатора API Google Instance для авторизации - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь позвонить на сторону сервера 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 ": "НЕАУТЕНТИФИЦИРОВАНО"}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...