Мой вызов API из кода Python2.7 работает, но не из Python3 .... Получение 'Неправильная комбинация id / секретного ключа' hmac.new - PullRequest
1 голос
/ 20 апреля 2019

Я пытаюсь сделать вызов 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"))
...