Чтобы исправить использование requests
:
- Используйте
post()
вместо get()
. - Используйте объект
auth
для создания основы c Auth header. (Или отправьте учетные данные в теле) - Удалите заголовок типа содержимого;
requests
установит это для вас. - Извлекает grant_type из строки запроса. Это относится к телу запроса.
Хотя в документации для конечной точки /oauth2/token
говорится, что вам нужно отправить базовый c auth заголовок для client_credentials
гранта, он также работает, если Вы отправляете идентификатор клиента и секрет в теле запроса (без заголовка авторизации).
Таким образом, эти python примеры работают и по существу эквивалентны:
Учетные данные в теле запроса :
import requests
url = 'https://<COGNITO_DOMAIN>.auth.<REGION>.amazoncognito.com/oauth2/token'
params = {
"client_secret": "1ixxxxxxxxxxxxxxxxc2b",
"grant_type": "client_credentials",
"client_id": "7xxxxxxxxxxxxxxxt"
}
response = requests.post(url, data=params)
print(response)
print(response.text)
Учетные данные в базе c auth header:
import requests
url = 'https://<COGNITO_DOMAIN>.auth.<REGION>.amazoncognito.com/oauth2/token'
params = {
"grant_type": "client_credentials"
}
auth = ('7xxxxxxxxxxt', '1ixxxxxxxxxxxxxxxc2b')
r = requests.post(url, data=params, auth=auth)
print(r)
print(r.text)