Как сгенерировать API-токен с помощью запросов

1

Я пытаюсь сделать запросы 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)
Теги:
python-requests
oauth-2.0

1 ответ

0

Из документов вы можете видеть, что data должны быть dict. У вас это как set содержащий строку.

Пытаться

data = {
    'grant_type': 'client_credentials',
    'scope': 'api_agencies_read%20api_listings_read'
}
  • 0
    Перешли на словарь, но все равно получаю ту же ошибку. Я вижу, что клиент должен быть в кодировке base64 согласно документации API. Я верю, что сделал это, но все еще получаю ошибку 400

Ещё вопросы

Сообщество Overcoder
Наверх
Меню