默认情况下,插件只提供基础音乐服务。当然,您也可以通过开通 AME 服务获取更丰富的音乐服务。
步骤1:曲库直通车 AME 服务开通
2. 确认 产品计费规则,并勾选同意 《腾讯云服务协议》 以及《正版曲库直通车服务协议》 。
3. 单击 立即开通,即可开通服务。
4. 参照 正版曲库直通车 AME-快速入门 完成以下3个步骤:
1. 域名添加
2. CNAME 配置
3. 链路链接测试
步骤2:签名生成
正常情况下,可以直接调用曲库 API获取音乐列表,但是由于音乐服务由微剪插件内部提供,没法主动调用 API。
所以必须向微剪插件传入签名,由插件自动获取音乐。签名生成步骤如下:
1. 获取调用服务端 API 所需的安全凭证,即
SecretId
和 SecretKey
,具体步骤如下:1. 登录控制台,选择 云产品 > 访问管理 >API密钥管理,进入 API 密钥管理 页面。
2. 获取云 API 密钥。如果您尚未创建密钥,则单击 新建密钥 即可创建一对 SecretId 和 SecretKey。
3. 拼接明文串 original。按照 URL QueryString 的格式要求拼接签名明文串 original,其格式如下:
secretId=[secretId]&vodAction=[vodAction]¤tTimeStamp=[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. 后台管理配置:
进入小程序管理后台,将自定义域名配置进
request
和 downloadFile
白名单即可。