baidu sdk 鉴权处理(nodejs)

比较坑 但是还是爬出来了 参考代码
const { Auth } = require('bce-sdk-js');

const accessKey = 'aaaaaaaaaaaaa';
const secretKey = 'sssssssssssss';
const bdauth = new Auth(accessKey, secretKey);
const HEADER = {
'Host': 'bcc.bj.baidubce.com',
'Content-Type': 'application/json; charset=UTF-8',
'x-bce-date': new Date().toISOString().replace(/\.\d+Z$/, 'Z')
};
const Authorization = bdauth.generateAuthorization('GET', '/v2/image', { maxKeys: 1000, imageType: 'All' }, HEADER);
当然 感觉baidu 已经放弃node了
可以自己尝试撸下
class authorization {
constructor() {
this.accessKey = ask.ak;
this.secretKey = ask.sk;
this.host = 'bcc.bj.baidubce.com';
this.utcTimestamp = new Date().toISOString().replace(/\.\d+Z$/, 'Z');
this.expireTime = 1800;
}
getAuthorization(method, uri, params, header, body) {
let authStringPrefix = `bce-auth-v1/${this.accessKey}/${this.utcTimestamp}/${this.expireTime}`;
let SigningKey = crypto.createHmac('sha256', this.secretKey.toString('ascii')).update(authStringPrefix).digest('hex');
let HEADER = {
'host': this.host,
'content-type': 'application%2Fjson%3B+charset%3Dutf-8',
'x-bce-date': this.utcTimestamp,
...header
};
const OBJKeySort = (obj) => {
const newkey = Object.keys(obj).sort();
const newObj = {};
for (var i = 0; i < newkey.length; i++) {
newObj[newkey[i]] = obj[newkey[i]];
}
return newObj;
};
HEADER = OBJKeySort(HEADER)
let headerArr = [];
for (let name in HEADER) {
let val = HEADER[name];
headerArr.push(`${name.toLowerCase()}:${val}`);
}
let signedHeaders = Object.keys(HEADER).join(';');
let requestStr = `${method}\n${uri}\n${params?qs.stringify(params)+'\n':''}${headerArr.join('\n')}`;
let Signature = crypto.createHmac('sha256', SigningKey.toString('ascii')).update(requestStr).digest('hex');
return `${authStringPrefix}/${signedHeaders}/${Signature}`;
}
}
module.exports = authorization;

0 个评论

要回复文章请先登录注册