更新时间:2025-08-11 GMT+08:00
公共依赖
使用样例时需要引用以下依赖文件:
data.js
exports.data = { //base_url(APP接入地址)、appid、secret,购买服务时下发,请替换为实际值 /* please replace the appId and secret, when you use the demo. */ click2call_appid: "*****", click2call_secret: "*****", callnotify_appid: "*****", callnotify_secret: "*****", callverify_appid: "*****", callverify_secret: "*****", t_transmit_appid: "*****", t_transmit_secret: "*****", /* please replace the IP and Port, when you use the demo. */ base_url: 'https://{domain}:{port}' };
reqUtil.js
/*jshint esversion: 6 */ var data = require('./data.js'); var url = require('url'); /** * Build the X-AKSK value. * @param appKey * @param appSecret * @returns */ function buildAKSKHeader(appKey, appSecret){ var crypto = require('crypto'); var util = require('util'); var time = new Date(Date.now()).toISOString().replace(/.[0-9]+\Z/, 'Z'); //Created var nonce = crypto.randomBytes(16).toString('hex'); //Nonce var passwordDigestBase64Str = crypto.createHmac('sha256', appSecret).update(nonce + time).digest('base64'); //PasswordDigest return util.format('UsernameToken Username="%s",PasswordDigest="%s",Nonce="%s",Created="%s"', appKey, passwordDigestBase64Str, nonce, time); } /** * Build the options value. * @param method * @param uri * @param queryParams * @param xaksk * @returns */ function createOptions(method, uri, queryParams, xaksk){ if(method === undefined || method === null){ return; } var path; if(queryParams === undefined || queryParams === null){ path = uri; } else { path = uri + '?' + queryParams; } var headers = { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'AKSK realm="SDP",profile="UsernameToken",type="Appkey"', 'X-AKSK': xaksk }; var urlobj = url.parse(data.data.base_url); var options = { host: urlobj.hostname, port: urlobj.port, path: path, method: method, headers: headers, strictSSL: false, rejectUnauthorized: false }; return options; } module.exports = { buildAKSKHeader, createOptions };
父主题: Node.js