Я пытаюсь сделать вызов API из моего кода Python2.7, который работает, но не из python3.6 .... Моя комбинация идентификатора и секрета не генерируется правильно, и я получаю ответ 403 с указанием идентификатора / секрет неверен на Python3.6. Я перепробовал все возможные комбинации из Python3.6, но ничего не работает ...
Ниже приведен код для python2.7 и 3.6
---------Python2.7---------
def generate_auth_string(self, method):
authstring = "%s\n%s/%s/%s\n%s\n%s\n" % (
self.formatted_date,
self.service_url.rstrip('/'), # this is merged with resource and "method" below
self.resource.strip('/'), # merged
method.strip('/'), # call scope (not http verb)
self.content_type,
self.method # HTTP VERB
)
hash1 = hmac.new(self.secret, authstring, hashlib.sha1).digest()
return "MPA %s:%s" % (self.key_id, base64.b64encode(hash1))
---------Python3.6---------
def generate_auth_string(self, method):
authstring = "%s\n%s/%s/%s\n%s\n%s\n" % (
self.formatted_date,
self.service_url.rstrip('/'), # this is merged with resource and "method" below
self.resource.strip('/'), # merged
method.strip('/'), # call scope (not http verb)
self.content_type,
self.method # HTTP VERB
)
secret = bytes(self.secret, 'utf-8')
authstring = bytes(authstring, 'utf-8')
return "MPA %s:%s" % (self.key_id, base64.b64encode(hmac.new(secret, authstring, hashlib.sha1).digest()).decode("utf-8"))