111 lines
4.4 KiB
JavaScript
111 lines
4.4 KiB
JavaScript
![]() |
// 获取微信公众号SDK权限
|
|||
|
//接口请求方法
|
|||
|
import $http from '@/config/requestConfig';
|
|||
|
import base from '@/config/baseUrl';
|
|||
|
import { publicShare } from '@/config/utils';
|
|||
|
//获取地理位置
|
|||
|
export const getLocation = () => {
|
|||
|
return new Promise((resolve, reject) => {
|
|||
|
//配置校验成功后执行
|
|||
|
jWeixin.ready(function () {
|
|||
|
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
|
|||
|
jWeixin.getLocation({
|
|||
|
type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
|
|||
|
success: function (res) {
|
|||
|
console.log(res);
|
|||
|
resolve(res);
|
|||
|
},
|
|||
|
fail: (err) => {
|
|||
|
reject(err);
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
//设置分享信息
|
|||
|
export const setShare = (data, callback) => {
|
|||
|
//配置校验成功后执行
|
|||
|
jWeixin.ready(function () {
|
|||
|
if (!data.link) {
|
|||
|
let url = window.location.href;
|
|||
|
let index = url.indexOf("?");
|
|||
|
if (index != -1) {
|
|||
|
if (url.indexOf("#") != -1 && url.indexOf("#") > index) {
|
|||
|
url = url.substring(0, index) + url.substring(url.indexOf("#"));
|
|||
|
} else {
|
|||
|
url = url.substr(0, index);
|
|||
|
}
|
|||
|
}
|
|||
|
data.link = url;
|
|||
|
}
|
|||
|
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
|
|||
|
jWeixin.updateAppMessageShareData({
|
|||
|
title: data.title, // 分享标题
|
|||
|
desc: data.desc, // 分享描述
|
|||
|
link: data.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
|
|||
|
imgUrl: data.imgUrl, // 分享图标
|
|||
|
success: function () {
|
|||
|
// 设置成功
|
|||
|
callback && callback();
|
|||
|
}
|
|||
|
});
|
|||
|
jWeixin.updateTimelineShareData({
|
|||
|
title: data.title, // 分享标题
|
|||
|
link: data.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
|
|||
|
imgUrl: data.imgUrl, // 分享图标
|
|||
|
success: function () {
|
|||
|
// 设置成功
|
|||
|
callback && callback();
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
//微信扫一扫
|
|||
|
export const scanQRCode = ( callback,needResult = 0) => {
|
|||
|
//配置校验成功后执行
|
|||
|
jWeixin.ready(function () {
|
|||
|
jWeixin.scanQRCode({
|
|||
|
needResult: needResult, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
|
|||
|
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
|
|||
|
success: function (res) {
|
|||
|
callback && callback(res);
|
|||
|
}
|
|||
|
});
|
|||
|
});
|
|||
|
}
|
|||
|
window.onload = function () {
|
|||
|
// 配置文件里面没有publicAppId将不激活微信SDK功能
|
|||
|
if (!base.publicAppId) {
|
|||
|
return;
|
|||
|
}
|
|||
|
//获取当前页面地址
|
|||
|
let url = window.location.href;
|
|||
|
url = url.substring(0, url.indexOf("#"));
|
|||
|
//获取微信公众号SDK权限的签名、随机数、时间戳
|
|||
|
$http.post("api/open/signature", {
|
|||
|
url: url
|
|||
|
}).then(res => {
|
|||
|
// 微信SDK配置
|
|||
|
jWeixin.config({
|
|||
|
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
|
|||
|
appId: base.publicAppId, // 必填,公众号的唯一标识
|
|||
|
timestamp: res.timestamp, // 必填,生成签名的时间戳
|
|||
|
nonceStr: res.noncestr, // 必填,生成签名的随机串
|
|||
|
signature: res.signature,// 必填,签名
|
|||
|
jsApiList: [
|
|||
|
"getLocation",
|
|||
|
"updateAppMessageShareData",
|
|||
|
"updateTimelineShareData",
|
|||
|
'onMenuShareAppMessage', //旧的接口,即将废弃
|
|||
|
'onMenuShareTimeline' //旧的接口,即将废弃
|
|||
|
] // 必填,需要使用的JS接口列表
|
|||
|
});
|
|||
|
//设置分享内容
|
|||
|
publicShare();
|
|||
|
});
|
|||
|
//配置校验失败后执行
|
|||
|
jWeixin.error(function (res) {
|
|||
|
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
|
|||
|
console.log(res);
|
|||
|
});
|
|||
|
};
|