当您使用 Python 对接阿里云 OpenAPI 自签名时,可以按照以下步骤进行操作:
requests
和 hmac
库。bash
pip install requests
params = {
'Action': 'your-action',
'Version': 'your-version',
'AccessKeyId': 'your-access-key-id',
'SignatureMethod': 'HMAC-SHA1',
'Timestamp': '2022-01-01T00:00:00Z',
'SignatureVersion': '1.0',
}
请将上述示例中的 'your-action'
、'your-version'
、'your-access-key-id'
和 '2022-01-01T00:00:00Z'
替换为实际的值。另外,请根据接口文档要求添加其他必要的请求参数。
key=value
形式拼接成字符串。import urllib.parse
canonicalized_query_string = urllib.parse.urlencode(sorted(params.items()))
method = 'GET' # 请求方法,可以是 GET、POST 等
uri = '/' # 请求 URI
string_to_sign = method + '&' + urllib.parse.quote('/') + '&' + urllib.parse.quote(canonicalized_query_string)
请根据实际请求方法和 URI 进行调整。
import hashlib
import hmac
import base64
access_key_secret = 'your-access-key-secret' # 您的 AccessKey Secret
signature = base64.b64encode(hmac.new(bytes(access_key_secret + '&', 'utf-8'), bytes(string_to_sign, 'utf-8'), hashlib.sha1).digest()).decode('utf-8')
请将上述示例中的 'your-access-key-secret'
替换为实际的值。另外,根据需要选择使用 HMAC-SHA1 或其他可用的哈希算法。
url = 'https://your-domain.com/?' + canonicalized_query_string + '&Signature='将上述示例中的 'https://your-domain.com/'
替换为实际的 API 地址。注意,最后需要将签名进行 URL 编码。
requests
库发起带有签名和请求参数的 HTTP 请求。import requests
response = requests.get(url)
print(response.text)
以上是一个简单的示例代码,您可以根据实际需求进行适当调整和扩展。
https://github.com/aliyun/aliyun-openapi-python-sdk/blob/ea220d6be1de0cba7b3af91727a33ea29e0fb1d0/aliyun-python-sdk-core/aliyunsdkcore/auth/algorithm/sha_hmac1.py#L29 此回答整理自钉群“阿里云 OpenAPI SDK 自签名服务群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。