前段时间是可以正常使用的,这两天测试时不知道为什么一直报bad token
错误。
我用七牛文档中的示例的文件名代入算法测试,得到的body
和文档给的例子一样。Token 的生成算法和七牛 SDK 里的也一样。
对过程检查了好几遍没发现问题在哪,只好求助下大家帮忙捉捉虫。
import request from 'superagent';
let __qiniuAccessKey = 'xxxx';
let __qiniuSecretKey = 'xxxx';
function makezip() {
let uri = 'http://api.qiniu.com/pfop/';
let key = 'uploads/123456.jpg';
let photoUrl = 'http://7xizen.com1.z0.glb.clouddn.com/uploads/123456.jpg';
photoUrl = 'url/' + encodeUrlSafeBase64(photoUrl);
let saveas = 'contest:test.zip';
saveas = '|saveas/' + encodeUrlSafeBase64(saveas);
let param = {
bucket: 'contest',
key,
fops: 'mkzip/2/' + photoUrl + saveas,
force: 1
}
let body = querystring.stringify(param);
let pathname = url.parse(uri).path;
let access = pathname + '\n' + body;
let digest = hmacSha1(access, __qiniuSecretKey);
digest = digest.replace(/\+/g, '-').replace(/\//g, '_');
let accessToken = 'QBox ' + __qiniuAccessKey + ':' + digest;
request
.post(uri)
.set('Content-Type', 'application/x-www-form-urlencoded')
.set('Authorization', accessToken)
.send(body)
.end((err, res) => {
console.log(res.body);
})
}
function encodeUrlSafeBase64(string) {
let s = new Buffer(string).toString('base64');
s = s.replace(/\+/g, '-').replace(/\//g, '_');
return s;
}
function hmacSha1(encodedFlags, secretKey) {
var hmac = crypto.createHmac('sha1', secretKey);
hmac.update(encodedFlags);
return hmac.digest('base64');
}
AccessKey
和SecretKey
已经反复检查没问题,资源确认可以公网访问。
你解决这个问题了吗,我也在找问题,执行感觉是成功了,空间就是没有新增zip文件