tencent cloud

文档反馈

客户端上传签名

最后更新时间:2024-05-16 14:48:59
    客户端在发起上传前,需要向 App 的签名派发服务器申请上传签名。客户端执行上传操作时,必须携带该签名,以便云点播验证客户端的上传是否被授权。

    签名生成步骤

    1. 获取云 API 密钥 获取调用服务端 API 所需的安全凭证,即 SecretId 和 SecretKey,具体步骤如下:
    2. 登录控制台,选择云产品 > 访问管理 > API 密钥管理,进入“API 密钥管理”页面。
    3. 获取云 API 密钥。如果您尚未创建密钥,则单击新建密钥即可创建一对 SecretId 和 SecretKey。
    4. 拼接明文串 original。
    按照 URL QueryString 的格式要求拼接签名明文串 original,其格式如下:
    secretId=[secretId]&currentTimeStamp=[currentTimeStamp]&expireTime=[expireTime]&random=[random]
    注意:
    上述 original 中的 [secretId][currentTimeStamp][expireTime][random] 需您自行替换成具体的参数值。
    original 至少包含 secretIdcurrentTimeStampexpireTimerandom 四个必选参数,可包含任意多个选填参数,详细请参见 签名参数
    参数值必须经过 UrlEncode,否则可能导致 QueryString 解析失败。
    5. 将明文串转为最终签名(以部分 Java 代码为例)。
    6. 用已获取的 SecretKey 对明文串 original 进行 HMAC-SHA1 加密,得到 signatureTmp:
    Mac mac = Mac.getInstance("HmacSHA1");
    SecretKeySpec secretKey = new SecretKeySpec(this.secretKey.getBytes("UTF-8"), mac.getAlgorithm());
    mac.init(secretKey);
    byte[] signatureTmp = mac.doFinal(original.getBytes("UTF-8"));
    说明:
    signatureTmp 是使用 UTF-8 编码、通过 HMAC-SHA1 加密出来的字节数组
    7. 将明文串 original 使用 UTF-8 编码成字节数组,然后把 signatureTmp 与该数组进行合并,最后把合并后的结果进行 Base64 编码,得到最终签名 signature:
    String signature = base64Encode(byteMerger(signatureTmp, original.getBytes("utf8")));
    说明:
    byteMerger 和 base64Encode 分别是数组合并和 Base64 编码的方法,详细请参见 Java 签名示例代码

    签名生成示例

    云点播还提供了签名生成示例代码和签名工具,便于您参考和验证:

    签名参数说明

    参数名称
    必选
    类型
    说明
    secretId
    String
    云 API 密钥中的 SecretId,获取方式请参见 客户端上传指引 - 获取云 API 密钥
    currentTimeStamp
    Integer
    当前 Unix 时间戳。
    expireTime
    Integer
    签名到期 Unix 时间戳。<br/>expireTime = currentTimeStamp + 签名有效时长<br/>签名有效时长最大取值为7776000,即90天。
    random
    Integer
    构造签名明文串的参数。十进制数,最大值4294967295(2^32-1,即32位无符号二进制数的最大值)。
    classId
    Integer
    视频文件分类,默认为0。
    procedure
    String
    视频后续任务处理操作,即完成视频上传后,可自动发起任务流操作。参数值为任务流模板名,云点播支持 创建任务流模板 并为模板命名。
    taskPriority
    Integer
    视频后续任务优先级(仅当指定了 procedure 时才有效),取值范围为[-10,10],默认为0。
    taskNotifyMode
    String
    任务流状态变更通知模式(仅当指定了 procedure 时才有效)。
    Finish:只有当任务流全部执行完毕时,才发起一次事件通知。
    Change:只要任务流中每个子任务的状态发生变化,都进行事件通知。
    None:不接受该任务流回调。
    默认为 Finish。
    sourceContext
    String
    来源上下文,用于透传用户请求信息,上传完成回调 将返回该字段值,最长250个字符。
    oneTimeValid
    Integer
    签名是否单次有效,详细请参见 客户端上传指引 - 单次有效签名
    默认为0,表示不启用;1表示签名单次有效。
    相关错误码详见 单次有效签名说明
    vodSubAppId
    Integer
    子应用 ID,如果不填写、填写0或填写开发者的腾讯云 AppId,则操作的子应用为“主应用”。
    sessionContext
    String
    会话上下文,用于透传用户请求信息,当指定 procedure 参数后,任务流状态变更回调 将返回该字段值,最长 1000 个字符。
    storageRegion
    String
    指定存储地域,可以在控制台上自助添加存储地域,详细请参见 上传存储设置,该字段填写为存储地域的 英文简称

    单次有效签名说明

    使用单次有效签名后,签名服务器需要保证每次派发给用户的签名不相同(如保证同一个时间点派发的签名random不重复),否则会导致重复签名的错误。
    签名错误导致的上传失败,如果重试,则需要获取新的签名。
    Android 和 Java SDK 签名错误引起的错误状态码是1001
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持