인증을 포함한 Python 요청(access_token)
파이썬에서 API 쿼리를 사용하려고 합니다.사용할 수 있는 명령줄에서curl
이와 같이:
curl --header "Authorization:access_token myToken" https://website.example/id
이것은 JSON 출력을 제공합니다.myToken
는 전체적으로 일정하게 유지되는 16진수 변수입니다.
저는 다른 id를 루프하여 출력을 분석할 수 있도록 python에서 이 전화를 걸고 싶습니다.인증이 필요하기 전에 인증을 수행했습니다.urllib2
저는 또한 그것을 살펴보았습니다.requests
모듈을 사용하여 인증하는 방법을 알 수 없습니다.
요청 패키지는 HTTP 요청에 매우 적합한 API를 가지고 있으며, 사용자 정의 헤더를 추가하면 다음과 같이 작동합니다(출처: 공식 문서).
>>> import requests
>>> response = requests.get(
... 'https://website.example/id', headers={'Authorization': 'access_token myToken'})
외부 종속성을 사용하지 않으려면 표준 라이브러리의 urllib2를 사용하는 것과 동일한 것이 다음과 같습니다(소스: 누락된 설명서).
>>> import urllib2
>>> response = urllib2.urlopen(
... urllib2.Request('https://website.example/id', headers={'Authorization': 'access_token myToken'})
Github에서 토큰을 사용하려고 할 때도 같은 문제가 있었습니다.
Python 3에서 작동한 유일한 구문은 다음과 같습니다.
import requests
myToken = '<token>'
myUrl = '<website>'
head = {'Authorization': 'token {}'.format(myToken)}
response = requests.get(myUrl, headers=head)
>>> import requests
>>> response = requests.get('https://website.com/id', headers={'Authorization': 'access_token myToken'})
위에서 설명한 내용이 작동하지 않는 경우 다음을 수행합니다.
>>> import requests
>>> response = requests.get('https://api.buildkite.com/v2/organizations/orgName/pipelines/pipelineName/builds/1230', headers={ 'Authorization': 'Bearer <your_token>' })
>>> print response.json()
import requests
BASE_URL = 'http://localhost:8080/v3/getPlan'
token = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImR"
headers = {'Authorization': "Bearer {}".format(token)}
auth_response = requests.get(BASE_URL, headers=headers)
print(auth_response.json())
출력:
{
"plans": [
{
"field": false,
"description": "plan 12",
"enabled": true
}
]
}
이미 많은 좋은 답변이 있었지만 아직 이 옵션을 보지 못했습니다.
사용 중인 경우requests
사용자 지정 인증 클래스를 지정할 수도 있습니다.HTTPBasicAuth
예:
from requests.auth import AuthBase
class TokenAuth(AuthBase):
def __init__(self, token, auth_scheme='Bearer'):
self.token = token
self.auth_scheme = auth_scheme
def __call__(self, request):
request.headers['Authorization'] = f'{self.auth_scheme} {self.token}'
return request
이는 다음과 같이 사용할 수 있습니다(예: 사용자 지정 auth_scheme 사용).
response = requests.get(
url='https://example.com',
auth=TokenAuth(token='abcde', auth_scheme='access_token'),
)
이것은 더 복잡한 설정 방법처럼 보일 수 있습니다.Request.headers
속성. 그러나 여러 유형의 인증을 지원하려는 경우에는 유용할 수 있습니다.이를 통해 다음을 사용할 수 있습니다.auth
대신에 논쟁headers
논쟁.
사용해 보셨습니까?uncurl
패키지(https://github.com/spulec/uncurl) ?파이프를 통해 설치할 수 있습니다.pip install uncurl
컬 요청이 반환됩니다.
>>> uncurl "curl --header \"Authorization:access_token myToken\" https://website.com/id"
requests.get("https://website.com/id",
headers={
"Authorization": "access_token myToken"
},
cookies={},
)
약간의 힌트를 추가하겠습니다: 헤더의 키 값은 사용자의 권한 유형에 따라 달라지는 것 같습니다. 저의 경우에는 다음과 같습니다.PRIVATE-TOKEN
header = {'PRIVATE-TOKEN': 'my_token'}
response = requests.get(myUrl, headers=header)
python에서 아래를 검색하는 데 사용되는 옵션 중 하나:
import requests
token="abcd" < retrieved based>
headers = {'Authorization': "Bearer {}".format(token)}
response = requests.get(
'https://<url api>',
headers=headers,
verify="root ca certificate"
)
print(response.content)
호스트 이름 불일치 오류가 발생하면 서버에서 호스트 이름으로 추가 SAN을 구성해야 합니다.
이게 도움이 되길 바랍니다.
언급URL : https://stackoverflow.com/questions/13825278/python-request-with-authentication-access-token
'programing' 카테고리의 다른 글
Maria에서 그룹 식별자를 변경하는 방법DB (0) | 2023.08.25 |
---|---|
Gradle: ':processDebugManifest' 작업을 실행하지 못했습니다. (0) | 2023.08.25 |
스크롤 가능한 div의 맨 위로 다시 스크롤합니다. (0) | 2023.08.25 |
여러 스크립트에서 Mariadb에 삽입 (0) | 2023.08.25 |
ASP.NET 웹 API 애플리케이션이 IIS 7에 배포될 때 404를 제공함 (0) | 2023.08.25 |