UNPKG

@discuzq/sdk

Version:

discuz dsk

82 lines (60 loc) 2.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); require("core-js/modules/es.regexp.exec.js"); require("core-js/modules/es.string.split.js"); Object.defineProperty(exports, "__esModule", { value: true }); exports.wxShare = exports.default = void 0; var _weixinJsSdk = _interopRequireDefault(require("weixin-js-sdk")); function getUrl() { var isiOS = /iPad|iPhone|iPod/.test(navigator.userAgent); var url = window.location.href.split('#')[0]; if (isiOS && window.entryUrl && !/wechatdevtools/.test(navigator.userAgent)) { // iOS下,URL必须设置为整个SPA的入口URL url = window.entryUrl; } return url; } //微信分享 taro中,可以只使用taro-share var wxShare = function wxShare(opts) { // 通过config接口注入权限验证配置 // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作 // todo 从forum 接口获取 offiaccount_close 信息,true则直接return var url = getUrl(); var data = null; //todo 从officaccount接口获取appid等数据 await request( 'offiaccount/jssdk?url=${encodeURIComponent(url)') var appId = data.appId, nonceStr = data.nonceStr, signature = data.signature, timestamp = data.timestamp; _weixinJsSdk.default.config({ debug: false, // 开启调试模式,开发时可以开启 appId: appId, // 必填,公众号的唯一标识 由接口返回 timestamp: timestamp, // 必填,生成签名的时间戳 由接口返回 nonceStr: nonceStr, // 必填,生成签名的随机串 由接口返回 signature: signature, // 必填,签名 由接口返回 jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'hideMenuItems', 'showMenuItems'] // 此处填你所用到的方法 }); // 通过ready接口处理成功验证 _weixinJsSdk.default.ready(function () { // 需在用户可能点击分享按钮前就先调用 var dataInfo = { title: opts.title || 'Discuz!Q', // 分享标题 desc: opts.desc || forums.set_site.site_introduction, // 分享描述 link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: opts.imgUrl || forums.set_site.site_favicon // 分享图标 }; _weixinJsSdk.default.updateAppMessageShareData(dataInfo); // 分享给朋友 _weixinJsSdk.default.updateTimelineShareData(dataInfo); // 分享到朋友圈 }); }; // todo 弹出提示页面引导使用微信自带的分享方式(微信浏览器,且是站点分享的时候) // 这部分设计ui且基本无js逻辑,不放在sdk exports.wxShare = wxShare; var _default = wxShare; exports.default = _default;