在第一次使用云 API 之前,请前往 AccessKey管理页面 申请安全凭证。 安全凭证包括 accessId 和 accessSecret
有了安全凭证 accessId 和 accessSecret 后,就可以生成签名串了。以下是生成签名串的详细过程:
假设用户的 accessId 和 accessSecret 分别是:
accessId: abcdefghijklmnop
accessSecret: 098a6bcd4621d383cade4e232627b4f9
注意:这里只是示例,请根据用户实际申请的 accessId 和 accessSecret 进行后续操作!
以发送短信请求为例,当用户调用这一接口时,其请求参数可能如下:
名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
accessId | string | 是 | 密钥 ID |
timestamp | string | 是 | 当前时间戳 |
nonce | int | 是 | 随机正整数 |
phone | string | 是 | 手机号码,多个手机号码用逗号(,)分隔 |
templateCode | string | 是 | 模板编号 |
templateVars | string | 否 | 模板变量 |
首先对所有请求参数按参数名的字典序( ASCII 码)升序排序。用户可以借助编程语言中的相关排序函数来实现这一功能,如 PHP 中的 ksort 函数。上述示例参数的排序结果如下:
{
'accessId' : 'abcdefghijklmnop',
'timestamp' : '1577774759',
'nonce' : 15486598,
'phone': '13800000000',
'templateCode': '100001',
'templateVars': '{"code":12345}',
}
使用其它程序设计语言开发时,可对上面示例中的参数进行排序,得到的结果一致即可。
示例的拼接结果为:
accessId=abcdefghijklmnop&nonce=48693365&phone=18306689868&templateCode=100001&templateVars={"code":123123}×tamp=1577412873
此步骤生成签名串。 首先使用 HMAC-SHA1 算法对上一步中获得的签名原文字符串进行签名,然后将生成的签名串使用 Base64 进行编码,即可获得最终的签名串。
具体代码如下,以 PHP 语言为例
$accessSecret = '098a6bcd4621d383cade4e232627b4f9';
$signStr = 'accessId=abcdefghijklmnop&nonce=48693365&phone=18306689868&templateCode=100001&templateVars={"code":123123}×tamp=1577412873';
$signature = base64_encode(hash_hmac("sha1", $signStr, $accessSecret, true));
echo $signature;
最终得到的签名串为:
BWo2qLPno5s8ZT3jRAxeDFjNYqk=