我想創建一個API我想在Python消耗的認證簽名,我想做的就是,類型錯誤:無法將「字節」對象隱含str的 - Python的
1)簽名是通過使用URI的查詢字符串部分的副本創建的,其示例如下所示。
?customerId=johns Trucks&userName=BobH&timeStamp=2014-05-01T11:00:00Z
2)確保您使用編碼UTF8編碼私鑰。一旦編碼,您可以使用您的私鑰創建您的簽名
3)將從步驟2創建的簽名轉換爲base64。
4)如果我們使用fakekey的私鑰,對於上面的URI字符串像這樣已經計算了HMAC-SHA1後,再轉換爲Base64
PeKNVo1BAiuZyHxIdMisidG92bg=
5簽名)的現在可以將簽名添加到請求的Http驗證標頭中。
以上選自直取自文檔和下面是我的嘗試,
private_key = bytes("auth", encoding='utf-8');
public_key = bytes("200000", encoding='utf-8');
customer_id = "HFH";
username = "API";
date_utc = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
message = bytes('?customerId=HFH&userName=API&timeStamp=' + date_utc, encoding='utf-8')
signature = base64.b64encode(hmac.new(private_key, message, digestmod=hashlib.sha1).digest())
encoded_sig = base64.b64encode(signature)
url = 'https://xxx.xxxxxxx.net/api/FleetVehicles?customerId=HFH&userName=API&timeStamp=' + date_utc;
data = requests.get(url, headers={'authorization:' + public_key + ":" + encoded_sig});
我的代碼是導致以下錯誤,
TypeError: Can't convert 'bytes' object to str implicitly
誤差從最後一行到來我的代碼示例。