JSSDK使用步骤
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。
在需要调用 JS 接口的页面引入如下 JS 文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js
如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。
备注:支持使用 AMD/CMD 标准模块加载方法加载
所有需要使用 JS-SDK 的页面必须先注入配置信息,否则将无法调用(同一个 url 仅需调用一次,对于变化 url 的SPA的web app可在每次 url 变化时进行调用,目前 Android 微信客户端不支持 pushState 的H5新特性,所以使用 pushState 来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。
wx.config({
debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的 JS 接口列表
});
注意:如果使用的是小程序云开发静态网站托管的域名的网页,可以免鉴权直接跳任意合法合规小程序,调用 wx.config 时 appId 需填入非个人主体的已认证小程序,不需计算签名,timestamp、nonceStr、signature 填入非空任意值即可。
wx.ready(function(){
// config信息验证后会执行 ready 方法,所有接口调用都必须在 config 接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在 ready 函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在 ready 函数中。
});
小程序部分api不兼容,需要引入sdk注入才能使用
uni.chooseFile(OBJECT)
平台差异说明
getShare({url:window.location.href}).then(response=>{
if(response.code==200){
let s = response.data
jweixin.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: s.app_id, // 必填,公众号的唯一标识
timestamp: s.time_stamp, // 必填,生成签名的时间戳
nonceStr: s.nonce_str, // 必填,生成签名的随机串
signature: s.signature,// 必填,签名
jsApiList: ["chooseImage","getLocalImgData"] // 必填,需要使用的JS接口列表
});
jweixin.ready(function () {
jweixin.checkJsApi({
jsApiList: ['chooseImage','getLocalImgData'], // 需要检测的 JS 接口列表,所有 JS 接口列表见附录2,
success: function(res) {
console.log(res)
}
});
})
this.jweixin = jweixin
}
})
uni.chooseFile({
count: 9,
type:'video',
sourceType:['album'],
extension: ['.mp4', '.ogg', '.flv','.avi','.wmv','.rmvb'],
success: function(res) {
res.tempFiles.forEach(async (item,index)=>{
_this.fileList.push(item);
var {file,key} = await _this.beforeUpload(index, res.tempFiles)
var nameArr = item.name.split('.');
let fileType = checkFileType(nameArr[nameArr.length - 1])
if(fileType.video){
file = item
}
let length = _this.fileList.length - 1;
let formData = {
key:key,
token:_this.formData['token']
}
await _this.uploadFile(file, formData, length)
})
}
})
App | H5 | 微信小程序 | 支付宝小程序 |
---|---|---|---|
x | √(HBuilder X2.9.9+) | x | x(可使用wx.chooseMessageFile) |
uni.chooseImage(OBJECT)
仅安卓使用sdk注入才可以选择图片,选择视频无效
通过localids转base64编码再转file格式上传服务器
convertLocalBase64(wx,id){
let _this = this
return new Promise((resolve,reject)=>{
wx.getLocalImgData({
localId: id, // 图片的localID
success: function (res) {
function getFileNameUUID() {
function rx() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
}
return `${+new Date()}_${rx()}${rx()}`
}
var bytes = atob(res.localData);
var ab = bytes.length;
var ia = new Uint8Array(ab);
for (var i = 0; i < ab; i++) {
ia[i] = bytes.charCodeAt(i);
}
let file = new File([ia], getFileNameUUID()+"-file.png", { type: "image/png" });
resolve(file);
}
});
})
}