中国站
帮助中心 > 通信 > API文档 > 调用方式 > 请求签名

请求签名

申请安全凭证

在第一次使用云 API 之前,请前往 AccessKey管理页面 申请安全凭证。 安全凭证包括 accessId 和 accessSecret

有了安全凭证 accessId 和 accessSecret 后,就可以生成签名串了。以下是生成签名串的详细过程:
假设用户的 accessId 和 accessSecret 分别是:

  1. accessId: abcdefghijklmnop
  2. accessSecret: 098a6bcd4621d383cade4e232627b4f9
  3. 注意:这里只是示例,请根据用户实际申请的 accessId accessSecret 进行后续操作!

以发送短信请求为例,当用户调用这一接口时,其请求参数可能如下:

名称 类型 是否必填 说明
accessId string 密钥 ID
timestamp string 当前时间戳
nonce int 随机正整数
phone string 手机号码,多个手机号码用逗号(,)分隔
templateCode string 模板编号
templateVars string 模板变量

1. 对参数排序

首先对所有请求参数按参数名的字典序( ASCII 码)升序排序。用户可以借助编程语言中的相关排序函数来实现这一功能,如 PHP 中的 ksort 函数。上述示例参数的排序结果如下:

  1. {
  2. 'accessId' : 'abcdefghijklmnop',
  3. 'timestamp' : '1577774759',
  4. 'nonce' : 15486598,
  5. 'phone': '13800000000',
  6. 'templateCode': '100001',
  7. 'templateVars': '{"code":12345}',
  8. }

使用其它程序设计语言开发时,可对上面示例中的参数进行排序,得到的结果一致即可。

2. 拼接请求字符串

示例的拼接结果为:

  1. accessId=abcdefghijklmnop&nonce=48693365&phone=18306689868&templateCode=100001&templateVars={"code":123123tamp=1577412873

3.生成签名串

此步骤生成签名串。 首先使用 HMAC-SHA1 算法对上一步中获得的签名原文字符串进行签名,然后将生成的签名串使用 Base64 进行编码,即可获得最终的签名串。
具体代码如下,以 PHP 语言为例

  1. $accessSecret = '098a6bcd4621d383cade4e232627b4f9';
  2. $signStr = 'accessId=abcdefghijklmnop&nonce=48693365&phone=18306689868&templateCode=100001&templateVars={"code":123123}×tamp=1577412873';
  3. $signature = base64_encode(hash_hmac("sha1", $signStr, $accessSecret, true));
  4. echo $signature;

最终得到的签名串为:

  1. BWo2qLPno5s8ZT3jRAxeDFjNYqk=