Python은 단일 토큰으로 Authorization 헤더를 전달하는 방법을 라이브러리에 요청합니다.
나는 요청 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>'))
하지만 이것들 중 아무 것도 작동하지 않습니다.
파이썬에서:
('<MY_TOKEN>')
와 동등합니다.
'<MY_TOKEN>'
그리고 통역을 요청합니다.
('TOK', '<MY_TOKEN>')
Basic Authentication(기본 인증)을 사용하여 다음과 같은 인증 헤더를 작성하도록 요청할 경우:
'VE9LOjxNWV9UT0tFTj4K'
그것은 다음의 기본 64 표현입니다.'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', ''))
이것이 누군가에게 도움이 되기를 바랍니다 :)
이것은 저에게 효과가 있었습니다.
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/')
여기서 찾았습니다. 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})
요청은 기본적으로 토큰이 아닌 사용자 패스 매개 변수로만 기본 인증을 지원합니다.
원하는 경우 다음 클래스를 추가하여 요청이 토큰 기반 기본 인증을 지원하도록 할 수 있습니다.
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
그런 다음 다음 요청을 실행하여 사용합니다.
r = requests.get(url, auth=BasicAuthToken(api_token))
다른 사용자가 여기서 제안한 것처럼 사용자 정의 헤더를 대신 공식화하는 것이 대안이 될 수 있습니다.
이것은 저에게 효과가 있었습니다.
r = requests.get('http://127.0.0.1:8000/api/ray/musics/', headers={'Authorization': 'Token 22ec0cc4207ebead1f51dea06ff149342082b190'})
내 코드는 사용자 생성 토큰을 사용합니다.
승인이 필요한 요청이 있습니다. 결과가 있을 수 있습니다.401
.
요청이 다음과 같다고 가정합니다.
REQ ='https://api.asite.com/something/else/else'
토큰이 있습니다.
TOKEN = 'fliuzabuvdgfnsuczkncsq12454632'
다음과 같이 머리글을 작성합니다.
HEADER = {'Authorization': f'{TOKEN}'}
다음과 같이 사용합니다.
req.get(REQ, headers=HEADER)
다음과 같이 결과를 표시합니다.
req.get(COACH, headers=HEADER).json()
언급URL : https://stackoverflow.com/questions/19069701/python-requests-library-how-to-pass-authorization-header-with-single-token
'programing' 카테고리의 다른 글
기존 데이터 테이블에 값이 있는 새 열을 추가하는 방법은 무엇입니까? (0) | 2023.07.16 |
---|---|
TypeScript는 생성된 객체를 반환하여 생성자에 대해 "초기화자가 없으며 생성자에 확실히 할당되지 않았습니다"라고 불평합니다. (0) | 2023.07.16 |
TypeScript에서 JSON 개체를 초기화하는 중 (0) | 2023.07.16 |
UIAactivity 크기를 변경할 수 있습니까?지표? (0) | 2023.07.16 |
matplotlib에서 색상 막대 범위 설정 (0) | 2023.07.16 |