Я пытаюсь сделать запросы API на сайт местной недвижимости: https://developer.domain.com.au/docs/read/Authorization
Мне нужно получить токен oauth2, а затем использовать его для выполнения запросов. К сожалению, я получаю ошибку 400 при запуске кода ниже. Я предполагаю, что URL-адрес запроса неверен, но, похоже, не может его получить. Спасибо
import requests
import json
token_url = "https://auth.domain.com.au/v1/connect/token"
client_id = '<client_id>'
client_secret = '<client_secret>'
data = {'grant_type=client_credentials&scope=api_agencies_read%20api_listings_read'}
access_token_response = requests.post(token_url, data=data, verify=False, allow_redirects=False, auth=(client_id, client_secret))
print(access_token_response)
РЕДАКТИРОВАТЬ:
Изменены данные в словаре по комментариям @aydow и изменены "область". Я вижу, что документы API запрашивают, чтобы client_id и client_secret были закодированы в base64. Обновлен код, и теперь он работает так, как должен
import requests
import json
from requests.auth import HTTPBasicAuth
token_url = "https://auth.domain.com.au/v1/connect/token"
client_id = '<client_id>'
client_secret = '<client_secret>'
payload = {'grant_type': 'client_credentials','scope': 'api_agencies_read%20api_listings_read'}
headers = {"Content-Type" : "application/x-www-form-urlencoded"}
access_token_response = requests.post(token_url, auth=HTTPBasicAuth(client_id, client_secret), data=payload, headers=headers)
print(access_token_response)
Из документов вы можете видеть, что data
должны быть dict
. У вас это как set
содержащий строку.
Пытаться
data = {
'grant_type': 'client_credentials',
'scope': 'api_agencies_read%20api_listings_read'
}