跳到主要内容

如何构建API签名

准备工作

在API请求中生成签名(X-Signature)时,您需要提供AccessKeyIdAccessKeySecret,这些信息可以从您的控制台账户中获取。

查看:如何获取AccessKeyId

构建签名字符串

要生成签名,请按照以下步骤进行:

  1. 将所有参数及其值放入一个映射中,并按键值升序排列。

  2. 连接所有参数以形成签名明文。

  3. 使用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