首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用指定时间点截图接口,签名失败?

用指定时间点截图接口,签名失败?

提问于 2019-03-28 16:53:00
回答 0关注 0查看 145

以下是代码,我在浏览器访问返回的url,返回 {"code":4100,"message":"\u8eab\u4efd\u8ba4\u8bc1\u5931\u8d25\uff0c\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u5931\u8d25","codeDesc":"AuthFailure"}

请求帮助!!!!

@RequestMapping("/mediaProcess")

@ResponseBody

public String mediaProcess(@RequestParam String fileId)throws Exception{

TreeMap<String, Object> params =newTreeMap<String, Object>();// TreeMap可以自动排序 params.put("Action","CreateSnapshotByTimeOffset");// 公共参数 params.put("Nonce",newRandom().nextInt(java.lang.Integer.MAX_VALUE));// 公共参数

params.put("Timestamp", System.currentTimeMillis()/1000);// 公共参数

params.put("Version","2018-07-17");// 公共参数

params.put("Region","ap-beijing");// 公共参数

params.put("SecretId", FrontendPropertyConfigurer.getValue("showSecretId"));// 公共参数

params.put("definition",10);

params.put("FileId",fileId);

params.put("timeOffset.0",1);

String sign =sign(getStringToSign(params), FrontendPropertyConfigurer.getValue("showSecretKey"),"HmacSHA1"); params.put("Signature", sign);// 公共参数

String url =getUrl(params);

return url;

}

privatefinalstatic String CHARSET ="UTF-8";

publicstatic String sign(String s, String key, String method)throws Exception {

Mac mac = Mac.getInstance(method);

SecretKeySpec secretKeySpec =newSecretKeySpec(key.getBytes(CHARSET),

mac.getAlgorithm());

mac.init(secretKeySpec);

byte[] hash = mac.doFinal(s.getBytes(CHARSET));

return DatatypeConverter.printBase64Binary(hash);

}

publicstatic String getStringToSign(TreeMap<String, Object> params){

StringBuilder s2s =newStringBuilder("GETcvm.tencentcloudapi.com/?");

for(String k : params.keySet()){

s2s.append(k).append("=").append(params.get(k).toString()).append("&");

}

return s2s.toString().substring(0, s2s.length()-1);

}

publicstatic String getUrl(TreeMap<String, Object> params)throws UnsupportedEncodingException {

StringBuilder url =newStringBuilder("https://vod.api.qcloud.com/v2/index.php?");

for(String k : params.keySet()){

url.append(k).append("=").append(URLEncoder.encode(params.get(k).toString(), CHARSET)).append("&");

}

return url.toString().substring(0, url.length()-1);

}

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档