У меня есть URI запроса и токен. Если я использую:
curl -s "<MY_URI>" -H "Authorization: TOK:<MY_TOKEN>"
и т.д., я получаю 200 и просматриваю соответствующие данные JSON. Итак, я установил запросы, и когда я пытаюсь получить доступ к этому ресурсу, я получаю 403, вероятно, потому, что я не знаю правильный синтаксис для передачи этого токена. Может ли кто-нибудь помочь мне разобраться? Вот что у меня есть:
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>'))
Но ничего из этого не работает.
Искал нечто подобное и наткнулся на это . Похоже, что в первом упомянутом вами варианте
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', ''))
Надеюсь, это кому-то поможет :)
источник
r = requests.get('<MY_URI>',auth=('<MY_TOKEN>'))
, получишьTypeError: 'str' object is not callable
. это озадачило меня на некоторое время, пока я не наткнулся на это: /Это сработало для меня:
access_token = #yourAccessTokenHere# result = requests.post(url, headers={'Content-Type':'application/json', 'Authorization': 'Bearer {}'.format(access_token)})
источник
Вы также можете установить заголовки для всего сеанса:
TOKEN = 'abcd0123' HEADERS = {'Authorization': 'token {}'.format(TOKEN)} with requests.Session() as s: s.headers.update(HEADERS) resp = s.get('http://example.com/')
источник
Запросы изначально поддерживают базовую аутентификацию только с параметрами передачи пользователя, а не с токенами.
При желании вы можете добавить следующий класс, чтобы запросы поддерживали базовую аутентификацию на основе токенов:
import requests from base64 import b64encode class BasicAuthToken(requests.auth.AuthBase): def __init__(self, token): self.token = token def __call__(self, r): authstr = 'Basic ' + b64encode(('token:' + self.token).encode('utf-8')).decode('utf-8') r.headers['Authorization'] = authstr return r
Затем, чтобы использовать его, выполните следующий запрос:
Альтернативой может быть формулировка собственного заголовка, как было предложено здесь другими пользователями.
источник
Я основал здесь, со мной все в порядке для linkedin: https://auth0.com/docs/flows/guides/auth-code/call-api-auth-code, поэтому мой код с входом в linkedin здесь:
ref = 'https://api.linkedin.com/v2/me' headers = {"content-type": "application/json; charset=UTF-8",'Authorization':'Bearer {}'.format(access_token)} Linkedin_user_info = requests.get(ref1, headers=headers).json()
источник
Вы можете попробовать что-то вроде этого
r = requests.get(ENDPOINT, params=params, headers={'Authorization': 'Basic %s' % API_KEY})
источник
Это сработало для меня:
r = requests.get('http://127.0.0.1:8000/api/ray/musics/', headers={'Authorization': 'Token 22ec0cc4207ebead1f51dea06ff149342082b190'})
В моем коде используется токен, созданный пользователем.
источник