Как мы подключаемся к API, который требует дополнительной аутентификации? - PullRequest
1 голос
/ 06 апреля 2020

Я пытаюсь создать простой сценарий переименования, который будет принимать около 50 файлов с различным азиатским текстом и переименовывать его обратно в Engli sh с помощью результатов, возвращаемых из MyDramaList API.

Согласно документации MDL API , мне нужны следующие четыре вещи:

  • Тип содержимого: приложение / json (включено в мой код)
  • MDL-API-ключ (client_id) (включен в мой код)
  • Авторизация: Носитель [access_token]
  • AUTHORIZE_CODE

Насколько я понимаю, аутентификация токен должен быть возвращен через эту конечную точку:

GET https://api.mydramalist.com/v1/oauth/authorize?response_type=code&client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]

Но когда я проверяю, содержит ли возвращаемый заголовок код аутентификации, я не нахожу:

 {'Date': 'some date here', 'Content-Type': 'text/html; charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Cookie': '__cfduid=123456789; expires=some date here GMT; path=/; domain=.mydramalist.com; HttpOnly; SameSite=Lax', 'Vary': 'Accept-Encoding', 'CF-Cache-Status': 'DYNAMIC', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '123456789', 'Content-Encoding': 'gzip'}

В документации, которую они имеют эти две следующие конечные точки для аутентификации:

GET https://api.mydramalist.com/v1/oauth/authorize?response_type=code&client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]


POST https://api.mydramalist.com/v1/oauth/token?response_type=authorization_code&client_id=[CLIENT_ID]&client_secret=[CLIENT_SECRET]&redirect_uri=[REDIRECT_URI]&code=[AUTHORIZE_CODE]

Мой вопрос: 1) как мне подключиться к этому API для поиска заголовка? 2a) Является ли AUTHORIZE_CODE тем же кодом, который я предполагаю включить в качестве access_token в Bearer? 2b) Как получить этот код?

Приведенный ниже код возвращает ответ 401, когда я пытаюсь найти заголовок по идентификатору (тот же идентификатор, который показан в примере):

import requests, json

HEADERS = {
    'Content-Type': 'application/json',
    'mdl-api-key': '123456'
}

req = requests.get(
 'https://api.mydramalist.com/oauth/authorize?response_type=code&client_id=123456&redirect_uri=http://localhost:5000'
) #this returns 200, but I am not sure exactly what is happening here. Is it returning authorization code? When I see if the authorization code is returned in the header, I find nothing


print(req.status_code)
print(req.headers)




r = requests.get('https://api.mydramalist.com/v1/titles/24640', params=HEADERS)
print(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...