Я пытаюсь получить статистику пользователя из Fortnite tracker api.
У меня есть ключ api и я использую правильный URL-адрес, как указано в документации
URL шаблона:
https://api.fortnitetracker.com/v1/profile/{platform}/{epic-nickname}
Желаемый URL:
https://api.fortnitetracker.com/v1/profile/pc/xantium0
Если я использую эту ссылку в браузере, я получаю {"message":"No API key found in request"}
(поскольку я не передал ключ API), поэтому ссылка должна быть правильной. Также, если я не передаю ключ api с urllib, я все равно получаю ошибку 403.
Я проверил, как передать заголовок в запросе: Как установить заголовки с помощью urllib python?
и до сих пор имеют этот код:
import urllib.request as ur
request = ur.Request('https://api.fortnitetracker.com/v1/profile/pc/xantium0', headers={'TRN-Api-Key' : 'xxx'})
response = ur.urlopen(request)
print(response.read())
При запуске я получаю эту ошибку:
urllib.error.HTTPError: HTTP Error 403: Forbidden
403 проверяется как:
HTTP 403 - это стандартный код состояния HTTP, переданный клиентам HTTP-сервером, чтобы указать, что сервер понял запрос, но не выполнит его. Существует несколько кодов ошибок под-состояния, которые предоставляют более конкретную причину для ответа с кодом статуса 403.
https://en.wikipedia.org/wiki/HTTP_403
Ответ такой же, если я не передаю ключ api в заголовке.
Я могу думать только о трех причинах, по которым этот код не работает:
TRN-Api-Key
Это не TRN-Api-Key
)Моя проблема заключается в том, что я думаю, что мой код является правильным:
Из документации:
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
Я передал url
и я прошел headers
(не смущаясь с аргументами data
). В документации api также упоминается, что она должна быть передана в заголовках.
Я также уверен, что мне нужно использовать TRN-Api-Key
как показано в документации api:
TRN-Api-Key: xxx
Также в этом вопросе (используя Ruby):
header = {
key: "TRN-Api-Key: Somelong-api-key-here"
}
Или я был заблокирован (возможно, хотя я получил ключ 15 минут назад) есть ли способ проверить? Будет ли возвращена эта ошибка?
Что мешает мне получать статистику пользователя?
Попробуйте использовать запросы, pythonic, быстрый и широко используемый модуль.
import requests
url = 'https://api.fortnitetracker.com/v1/profile/pc/xantium0'
headers = {
'TRN-Api-Key' : 'xxx'
}
response = requests(url, headers=headers)
print('Requests was successful:', response.ok)
print(response.text)
Если он не работает, вы можете посетить URL-адрес своего браузера, а затем проверить запросы: в Firefox нажмите Cntrl + Shift + E, в Chrome Cntrl + E (или Inspect с Cntrl + Shift + I, а затем перейдите в Network). Нажмите " https://api.fortnitetracker.com/v1/profile/pc/xantium0 " и измените заголовки. На Firefox есть кнопка Modify и resend. Проверьте ответ и, в конце концов, попробуйте изменить имя ключа api заголовка.
Надеюсь, это поможет, дайте мне знать.
response = requests.get(url, headers=headers)
. Когда он запускается, я получаю, что Requests was successful: False {"message":"Invalid authentication credentials"}
. Похоже, ключ неправильный, но он точно совпадает.