有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
默认情况下,插件只提供基础音乐服务。当然,您也可以通过开通 AME 服务获取更丰富的音乐服务。

步骤1:曲库直通车 AME 服务开通

1. 打开 正版曲库直通车 介绍页,单击 立即使用 按钮,页面会跳转至控制台的 服务开通页面
3. 单击 立即开通,即可开通服务。
4. 参照 正版曲库直通车 AME-快速入门 完成以下3个步骤:

步骤2:签名生成

正常情况下,可以直接调用曲库 API获取音乐列表,但是由于音乐服务由微剪插件内部提供,没法主动调用 API。 所以必须向微剪插件传入签名,由插件自动获取音乐。签名生成步骤如下:
1. 获取调用服务端 API 所需的安全凭证,即 SecretIdSecretKey,具体步骤如下:
1. 登录控制台,选择 云产品 > 访问管理 >API密钥管理,进入 API 密钥管理 页面。
2. 获取云 API 密钥。如果您尚未创建密钥,则单击 新建密钥 即可创建一对 SecretId 和 SecretKey。
3. 拼接明文串 original。按照 URL QueryString 的格式要求拼接签名明文串 original,其格式如下:
secretId=[secretId]&vodAction=[vodAction]&currentTimeStamp=[currentTimeStamp]&expireTime=[expireTime]&random=[random]
参数名称
类型
是否必填
说明
secretId
string
请到 腾讯云账号信息 中查看
vodAction
string
固定值 vodMusic
currentTimeStamp
number
时间戳(秒)
expireTime
number
过期时间(秒)
random
number
随机数
说明
上述 original 中的 vodAction 为固定值,[secretId][currentTimeStamp][expireTime][random]需您自行替换成具体的参数值。
参数值必须经过 UrlEncode,否则可能导致 QueryString 解析失败。
4. 将明文串转为最终签名(以部分 Node.js 代码为例):
4.1 用已获取的 SecretKey 对明文串 original 进行 HMAC-SHA1 加密,得到 hmacBuffer。
4.2 将明文串 original 使用 UTF-8 编码成字节数组,然后把 hmacBuffer 与该数组进行合并,最后把合并后的结果进行 Base64 编码,得到最终签名 signature。
Node.js示例如下:
const queryString = require('querystring');
const crypto = require('crypto');

const timeStamp = Math.ceil(Date.now() / 1000);

const original = {
secretId: 'idxxx',
vodAction:'vodMusic',
currentTimeStamp: timeStamp,
expireTime: timeStamp + 300,
random: Math.floor(Math.random() * 0xFFFFFFFF)
}

const SecretKey = '密钥xxx'

function sign(SecretKey, original) {
let originalStr = queryString.stringify(original) // 将请求参数对象拼接为明文字符串
let originalBuffer = Buffer.from(originalStr, "utf8") // 将明文字符串转为utf8二进制
let hmac = crypto.createHmac("sha1", SecretKey)
let hmacBuffer = hmac.update(originalStr).digest() // 以 SecretKey 为密钥,将 originalStr明文字符串进行hash加密

let signature = Buffer.concat([hmacBuffer, originalBuffer]).toString("base64")
return signature // 生成签名
}

const signature = sign(SecretKey, original); // 最终的签名


步骤3:签名传入插件

接下来需要在小程序中把签名注入插件,在引入 clip 组件所对应的 js 中设置签名。
clip 组件,目录 page/main/index.wxml
<my-clip settings="{{settings}}"></my-clip>
index.js,目录 page/main/index.js。步骤如下:
1.1 在 onReady 中获取插件实例。
1.2 调用插件 setData 方法,给 musicSign 字段赋值您所计算出来的签名即可。示例如下:
onReady: function (options) {

wx.request({
url: 'https://your-url.com/getSign', // 您自己获取签名的服务
success(res) {
var pluginInstance = requirePlugin('myPlugin'); // 获取插件实例

pluginInstance.setData('musicSign', res.sign) // 设置签名
}
})

},


步骤4:导出跨域问题解决

针对自定义曲库域名的客户,需要做如下配置,否则会产生跨域问题无法导出。因为插件和小程序是完全隔离的环境,客户自定义域名不在插件白名单中。为了解决这个问题,您还需要做一些简单的配置,步骤如下:
1. 代码配置
1. 在小程序根目录下引入 index.js,目录:miniprogram/index.js
module.exports = {
downloadFile:wx.downloadFile
}
2. app.json 中将 downloadFile 方法导出到插件。
"plugins": {
"myPlugin": {
"provider": "wx76f1d77827f78beb",
"version": "xxxx.xxx.xxx",
"export": "index.js"
}
},

3. 后台管理配置: 进入小程序管理后台,将自定义域名配置进 requestdownloadFile 白名单即可。