签名生成步骤
获取云 API 密钥
获取腾讯云用户身份密钥,即 SecretId 和 SecretKey,具体步骤如下:
1. 登录控制台,选择 云产品 > 访问管理 >API密钥管理,进入 API 密钥管理页面。
2. 获取云 API 密钥。如果您尚未创建密钥,则单击 新建密钥 即可创建一对 SecretId 和 SecretKey。
拼接明文串
按照 URL QueryString 的格式要求拼接签名明文串 original,其格式如下:
secretId=[secretId]¤tTimeStamp=[currentTimeStamp]&expireTime=[expireTime]&random=[random]&platform=[platform]&action=[action]&userId=[userId]
注意
上述 original 中的
[secretId]
、[currentTimeStamp]
、[expireTime]
、[random]
、[platform]
、[action]
及[userId]
需要自行替换成具体的参数值。original 除了可以包含必选参数,还可包含任意多个选填参数,详细请参见 签名参数。
参数值必须经过 UrlEncode,否则可能导致 QueryString 解析失败。
将明文串转为最终签名
1. 用已获取的 SecretKey 对明文串 original 进行 HMAC-SHA1 加密,得到 signatureTmp:
SecretKeySpec secretKey = new SecretKeySpec(this.secretKey.getBytes("UTF-8"), mac.getAlgorithm());mac.init(secretKey);byte[] signatureTmp = mac.doFinal(original.getBytes("UTF-8"));
2. 将明文串 original 使用 UTF-8 编码成字节数组,然后把 signatureTmp 与该数组进行合并,最后把合并后的结果进行 Base64 编码,得到最终签名 signature:
String signature = base64Encode(byteMerger(signatureTmp, original.getBytes("utf8")));
签名参数说明
参数名称 | 必选 | 类型 | 说明 |
secretId | 是 | String | 云 API 密钥 中的 SecretId。 |
currentTimeStamp | 是 | Integer | 当前 Unix 时间戳。 |
expireTime | 是 | Integer | 签名到期 Unix 时间戳, expireTime = currentTimeStamp + 签名有效时长 。 |
random | 是 | Integer | 随机数,类型为32位无符号整型。 |
platform | 是 | String | 平台名称。 |
action | 是 | String | 操作 API 名称,目前支持: OpenProject:打开项目编辑页。 Upload:上传文件。 Login:客户端 API 登录。 |
userId | 是 | String | 用户 ID,为开发者服务端用户的唯一标识。 |
openProject.projectId | 否 | String | 项目 ID,当 action=OpenProject 时有效。 |