Python запрашивает библиотеку, как передать заголовок авторизации с помощью одного токена
у меня есть URI запроса и маркер. Если я использую:
curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>"
etc., Я получаю 200 и просматриваю соответствующие данные JSON. Итак, я установил запросы, и когда я пытаюсь получить доступ к этому ресурсу, я получаю 403, вероятно, потому, что я не знаю правильного синтаксиса для передачи этого токена. Кто-нибудь может помочь мне разобраться? Вот что у меня есть:--4-->
import sys,socket
import requests
r = requests.get('<MY_URI>','<MY_TOKEN>')
r. status_code
Я уже пробовал:
r = requests.get('<MY_URI>',auth=('<MY_TOKEN>'))
r = requests.get('<MY_URI>',auth=('TOK','<MY_TOKEN>'))
r = requests.get('<MY_URI>',headers=('Authorization: TOK:<MY_TOKEN>'))
но ничего из этого не работает.
5 ответов
в python:
('<MY_TOKEN>')
эквивалентно
'<MY_TOKEN>'
и просит интерпретирует
('TOK', '<MY_TOKEN>')
поскольку вы хотите, чтобы запросы использовали базовую аутентификацию и создавали заголовок авторизации, например:
'VE9LOjxNWV9UT0tFTj4K'
который является представлением base64 'TOK:<MY_TOKEN>'
чтобы передать свой собственный заголовок, вы проходите в словаре так:
r = requests.get('<MY_URI>', headers={'Authorization': 'TOK:<MY_TOKEN>'})
Я искал что-то похожее и наткнулся этой. Похоже, что в первом варианте вы упомянули
r = requests.get('<MY_URI>',auth=('<MY_TOKEN>'))
"auth" принимает два параметра: имя пользователя и пароль, поэтому фактическая инструкция должна быть
r=requests.get('<MY_URI>',auth=('<YOUR_USERNAME>','<YOUR_PASSWORD>')
в моем случае не было пароля, поэтому я оставил второй параметр в поле auth пустым, как показано ниже:
r=requests.get('<MY_URI',auth=('MY_USERNAME',''))
надеюсь, это кому-то поможет:)
вы также можете установить заголовки для всего сеанса:
TOKEN = 'abcd0123'
HEADERS = {'Authorization': 'token {}'.format(TOKEN)}
with requests.Session() as s:
s.headers.update(HEADERS)
resp = s.get('http://example.com/')
это сработало для меня: access_token = #yourAccessTokenHere#
result = requests.post(url,
headers={'Content-Type':'application/json',
'Authorization': 'Bearer {}'.format(access_token)})
вы можете попробовать что-то вроде этого
r = requests.get(ENDPOINT, params=params, headers={'Authorization': 'Basic %s' % API_KEY})