簽名算法爲HmacSHA256,簽名數據是當前時間戳timestamp,密鑰是appId對應的appSecret計算出來的簽名值,算出來的digest再經過base64加密後即是所需要的簽名數據。官方文檔中只給了Java和PHP的示例demo,因此,根據Java和PHP的demo寫一個python版的。
1 import hmac 2 from base64 import standard_b64encode 3 4 5 def get_ding_talk_signature(app_secret, utc_timestamp): 6 """ 7 :param app_secret: 釘釘開發者文檔創建的app密鑰 8 :param utc_timestamp: 官方文檔中要簽名的數據,單位是毫秒時間戳 9 :return: 爲所需要的簽名值,此值爲可逆的 10 """ 11 digest = hmac.HMAC(key=app_secret.encode('utf8'),
msg=utc_timestamp.encode('utf8'),
digestmod=hmac._hashlib.sha256).digest() 14 signature = standard_b64encode(digest).decode('utf8') 15 return signature
以下是釘釘官方的簽名計算文檔鏈接