자격 증명이 {email}/token:{security_token}
- 오히려 하나의 값으로 지정되어야하는 외부 REST API (Zendesk 's)를 처리하도록 요청 받았습니다. 일반적인 사용자 이름/암호 쌍보다. Python requests
모듈을이 작업에 사용하려고합니다. Pythonic이고 내 머리를 너무 심하게 손상시키지 않으므로 인증 자격 증명의 형식을 지정하는 방법을 모르겠습니다. Zendesk 문서는 익숙하지 않은 curl
을 사용한 액세스 예제 만 제공합니다. 여기Zendesk : Python 3.2.2 'requests'모듈 및 API 토큰을 사용하여 인증하기
내가 현재 서브 클래스 requests.auth.AuthBase
이 방법은 다음과 같습니다
class ZDTokenAuth(requests.auth.AuthBase):
def __init__(self,username,token):
self.username = username
self.token = token
def __call__(self,r):
auth_string = self.username + "/token:" + self.token
auth_string = auth_string.encode('utf-8')
r.headers['Authorization'] = base64.b64encode(auth_string)
return r
나는 다양한 인코딩이 필요하다는 것을 확실하지 않다,하지만 누군가가하지 GitHub의 (https://github.com/skipjac/Zendesk-python-api/blob/master/zendesk-ticket-delete.py) 왜에 그것을 어떻게 때문입니다. 물론 인코딩없이 시도해 보았습니다. 물론 같은 결과입니다.
class ZDStats(object):
api_base = "https://mycompany.zendesk.com/api/v2/"
def __init__(self,zd_auth):
self.zd_auth = zd_auth # this is assumed to be a ZDTokenAuth object
def testCredentials(self):
zd_users_url = self.api_base + "users.json"
zdreq = requests.get(zd_users_url, auth=self.zdauth)
return zdreq
이가 불려 :
이credentials = ZDTokenAuth(zd_username,zd_apitoken)
zd = ZDStats(credentials)
users = zd.testCredentials()
print(users.status_code)
print(users.text)
내가 다시 받고 있어요 상태 코드는 401
이며,
다음은 클래스 및 방법은 내가 이것을 테스트하기 위해 사용하고 있어요 텍스트는 간단히 {"error":"Couldn't authenticate you."}
입니다. 분명히 여기에서 뭔가 잘못하고있는 것이 분명합니다. 그러나 그것이 의미가있는 경우 잘못하고있는 것이 무엇인지 알만큼 충분히 생각하지 않습니다. 어떤 아이디어?
이이 - 특히, 단순히/토큰 "'추가했다 "기본 HTTP 인증 튜플의 사용자 이름에"완벽하게 작동했습니다. 당신의 도움을 주셔서 감사합니다! – Kudzu