//java后端计算签名
public static String signateForCOS(String method,String key) {
try {
String bucketName = BUCKET_NAME;
COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);
COSSigner signer = new COSSigner();
//设置过期时间为 1 个小时
Date expiredTime = new Date(System.currentTimeMillis() + 3600L * 1000L);
// 要签名的 key, 生成的签名只能用于对应此 key 的上传
//String key = "/userImage";
HttpMethodName methodName = null;
switch(method.toLowerCase()){
case "post":
methodName = HttpMethodName.POST;
break;
case "get":
methodName = HttpMethodName.GET;
break;
case "put":
methodName = HttpMethodName.PUT;
break;
}
String sign = signer.buildAuthorizationStr(methodName, key, cred, expiredTime);
logger.info("参数信息:"+methodName+" "+key);
logger.info("/userImage算的签名信息是:{}", sign);
return sign;
} catch (Exception e) {
logger.error("signateForCOS error ,info is " + e);
}
return "";
}
小程序前台代码:
var cos = new COS({
getAuthorization: function(params, callback) { //获取签名 必填参数
// 方法一(推荐)服务器提供计算签名的接口
wx.request({
url: app.globalData.urlPath + '/wechat/getSign',
data: {
Method: params.Method,
Key: params.Key
},
dataType: 'text',
success: res => {
var res = res.data
console.log("接口返回结果:"+res)
//var json = JSON.parse(res);
//console.log("签名信息:" + res['data'])
callback(res);
}
});
// 方法二(适用于前端调试)
/**
var authorization = COS.getAuthorization({
SecretId: config.SecretId,
SecretKey: config.SecretKey,
Method: params.Method,
Key: params.Key
});
console.log("authorization is "+authorization)
callback(authorization);
*/
}
});
最后为什么还是返回AccessDenied禁止访问呢?签名的计算过程有问题吗?还是在哪里有问题
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
<Resource>gxtdlm-1258532084.cos.ap-beijing.myqcloud.com/wx114f04180b885f25.o6zAJs4_u9NmbTbvfTrLTVgRE9h0.6ZggaTp0lNhDd6c19a88e2e6d2a626487e7a487d78a5.jpeg</Resource>
<RequestId>NWM4OWM4MGNfZGMyOTVkNjRfNDcyY18xOTU4YTFk</RequestId>
<TraceId>OGVmYzZiMmQzYjA2OWNhODk0NTRkMTBiOWVmMDAxODc0OWRkZjk0ZDM1NmI1M2E2MTRlY2MzZDhmNmI5MWI1OTQyYWVlY2QwZTk2MDVmZDQ3MmI2Y2I4ZmI5ZmM4ODFjMTIyODZmMTQ1NWFiZTE0NGQ1ZDFiNmU5YWY4MmNkMzc=</TraceId>
</Error>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。