如何构建API签名
准备工作
在API请求中生成签名(X-Signature
)时,您需要提供AccessKeyId
和AccessKeySecret
,这些信息可以从您的控制台账户中获取。
构建签名字符串
要生成签名,请按照以下步骤进行:
将所有参数及其值放入一个映射中,并按键值升序排列。
连接所有参数以形成签名明文。
使用SHA1对明文进行签名。
注意:如果接口需要文件上传请求(例如图片或视频),文件流不会包含在签名中。将文件转换为文件流格式并单独请求。
步骤1: 从控制台获取AccessKeySecret
。
MjI3YmYyMjItNmM4Mi00ZGM5LWEwNDQtN2EzZjM0Yzk2OWE1
步骤2: 从请求中获取请求体,并根据第一个字符的ASCII码(按字母顺序升序)对其进行排序。如果字符相同,则根据第二个字符的ASCII码进行排序,依此类推。
{
"Action": "SendBatchUSMSMessage",
"AccountId": 10001,
"TaskContent": [{
"TemplateId": "UTA2233108MUY3HZ",
"SenderId": "uSpeedo",
"Target": [{
"TemplateParams": ["123456", "653132", "nickname1"],
"Phone": "55212345780"
}, {
"TemplateParams": ["123457", "765421", "nickname2"],
"Phone": "55212345781"
}]
}]
}
步骤3: 将排序后的参数及其对应的值组合成格式为 parameter=parametervalue
的字符串。在此签名字符串末尾附加AccessKeySecret
。生成的字符串即为未签名字符串。
AccountId10001ActionSendBatchUSMSMessageTaskContentSenderIduSpeedoTargetPhone55212345780TemplateParams123456653132nickname1Phone55212345781TemplateParams123457765421nickname2TemplateIdUTA2233108MUY3HZMjI3YmYyMjItNmM4Mi00ZGM5LWEwNDQtN2EzZjM0Yzk2OWE1
步骤4:计算签名值
使用SHA1对未签名字符串进行编码以生成请求签名。
69cc15724cda05b63c99cebf8226202d4c69ef0f
步骤5:设置HTTP头部
API请求需要通过HTTP头部传递签名信息。必须包括以下四个参数:
X-Signature
: 签名值X-Timestamp
: 时间戳(在五分钟内)X-Nonce
: 随机字符串X-Access-Key-Id
: 控制台账户的AccessKeyId