Я пытаюсь преобразовать вызов API REST из Java в Python, но не могу сгенерировать подпись API-заголовка.
Я попробовал следующий код -
consumerKey = "xyz"
consumerSecret = "xyz"
callBackURL = "www.example.com"
t = str(time.time()).split('.')
timestamp = t[0]
oauthstr = client_id + ":" + client_secret
auth = base64.b64encode(oauthstr.encode())
url = "https://example.com/v2/oauth/generateaccesstoken"
querystring = {"grant_type":"client_credentials"}
base_str = callback + client_id + t[0]
signature = hmac.new(str.encode(base_str), str.encode(client_secret), hashlib.sha256).hexdigest()
signature = base64.b64encode(signature.encode())
payload = ""
headers = {
'Authorization': "Basic "+auth.decode(),
'signature': signature,
'timestamp': timestamp,
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
Я получаю {"Ошибка": "4301"}, что означает - "Подпись HMAC была передана, но не правильная"
В Java, я генерирую подпись, как -
mixcode = callBackURL+consumerKey+timeStamp;
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(consumerSecret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
signature = Base64.encodeBase64String(sha256_HMAC.doFinal(mixcode.getBytes()));