根据官方要安装这哪的太麻烦了问题太多了,于是自己封装了一个,出于安全考虑建议放在云端这里讲方法,包下载百度网盘,项目下载git
小程序生成token封装
把这个包放在项目中
//这几个包建议在上面链接下载,不建议npm安装会各种问题,
const Buffer = require('./buffer/buffer.js');
const CryptoJS = require('./copyto/hmac-sha1.js');
const base64 = require('./copyto/enc-base64.js');
function base64ToUrlSafe(v) {
return v.replace(/\//g, '_').replace(/\+/g, '-');
};
function token(opt) {
var accessKey = opt.ak;
var secretkey = opt.sk;
var bucket=opt.bkt;
var strdata={
"scope": bucket,//空间域名
"deadline": Date.parse(new Date()) //当前时间截
}
wx.setStorageSync('tokentime', strdata.deadline)
var str = JSON.stringify(strdata);
var encoded = Buffer.from(str).toString('base64');
console.log('base64', encoded)
var encodedStr = base64ToUrlSafe(encoded);
console.log('encodedStr', str,encodedStr)
//HmacSHA1加密
var sign = CryptoJS.HmacSHA1(encodedStr, secretkey);
console.log('sign',sign)
var cod = base64.stringify(sign)
console.log('cod',cod)
var encodedSign = base64ToUrlSafe(cod);
var token = accessKey + ':' + encodedSign + ':' + encodedStr;
console.log('token', token)
return token;
};
exports.hmacSha1 = function (encodedFlags, secretKey) {
/*
*return value already encoded with base64
* */
var hmac = crypto.createHmac('sha1', secretKey);
hmac.update(encodedFlags);
return hmac.digest('base64');
};
module.exports = {
token:token
}
在js使用
const token = require('../utils/qiniu/qntoken.js')//引入封装代码
//测试获取token按钮
testgettoken(){
var tokendata=[]
tokendata.ak ='你的ak'
tokendata.sk = '你的'
tokendata.bkt = '你的空间名'
tokendata.cdn = '你的测试cdn'
this.data.tokendata = tokendata
var uptoken = token.token(tokendata) //参数传入封装代码函数
this.setData({
uptoken: uptoken
})
console.log('uptoken', uptoken,this.data.tokendata)
},