七牛 mkzip 抽风了?

前段时间是可以正常使用的,这两天测试时不知道为什么一直报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');
}

AccessKeySecretKey已经反复检查没问题,资源确认可以公网访问。

阅读 2.8k
1 个回答
新手上路,请多包涵

你解决这个问题了吗,我也在找问题,执行感觉是成功了,空间就是没有新增zip文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题