微信自定义分享到朋友圈、好友

阅读619评论0

微信分享API还不是那么坑,很好对接,下面是流程:

1、拥有API权限

 在公众号左侧“开发”->“接口权限”->“分享接口”,查看是否获得了

2、配置JS接口安全域名

在“公众号设置”->“功能设置”,配置JS接口安全域名,不知道什么填写的,微信有提示

然后就开始开发了,可以下载微信的DEMO看看怎么写

DEMO下载:http://demo.open.weixin.qq.com/jssdk/sample.zip


开发过程:

1、引入微信JS

<s cript src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></s cript>

备注:支持使用 AMD/CMD 标准模块加载方法加载,支持https

2、配置接口注入权限验证

wx.config({    debug: false,  // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。    appId: appId,  // 必填,公众号的唯一标识    timestamp: timestamp,  // 必填,生成签名的时间戳    nonceStr: nonceStr, // 必填,生成签名的随机串    signature: signature, // 必填,签名    jsApiList: [ 'onMenuShareTimeline' ]  //必填,需要使用的JS接口列表});

JS接口列表:详见附录2 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

config配置的参数demo有写,可以看看整合到自己系统中

public function getSignPackage() {    $jsapiTicket = $this->getJsApiTicket();    // 注意 URL 一定要动态获取,不能 hardcode.    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";    $timestamp = time();    $nonceStr = $this->createNonceStr();    // 这里参数的顺序要按照 key 值 ASCII 码升序排序    $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";    $signature = sha1($string);    $signPackage = array(      "appId"     => $this->appId,      "nonceStr"  => $nonceStr,      "timestamp" => $timestamp,      "url"       => $url,      "signature" => $signature,      "rawString" => $string    );    return $signPackage; }

上面就是config配置中所用的参数。

3、做好准备

要写在wx.ready里面,这个都懂

wx.ready(function(){    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。/*这里写事件以及逻辑,比如:分享到朋友圈,分享给朋友等等*/});

配置处理失败验证

wx.error(function(res){    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。});


4、开始写事件

特别注意,一定要注意了,ready里面有那个事件,config的jsApiList里面也要对应有,否则不管用的,这是个坑,,,

//分享到朋友圈wx.onMenuShareTimeline({    title: '微信自定义分享', // 分享标题    link: 'http://www.webstr.top', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致    imgUrl: '', // 分享图标    success: function () {         // 用户确认分享后执行的回调函数    },    cancel: function () {         // 用户取消分享后执行的回调函数    }});//分享给朋友wx.onMenuShareAppMessage({    title: '微信自定义分享', // 分享标题    desc: '仔细看文档', // 分享描述    link: 'http://www.webstr.top', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致    imgUrl: '', // 分享图标    type: 'link', // 分享类型,music、video或link,不填默认为link    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空    success: function () {         // 用户确认分享后执行的回调函数    },    cancel: function () {         // 用户取消分享后执行的回调函数    }});//分享到QQwx.onMenuShareQQ({    title: '微信自定义分享', // 分享标题    desc: '仔细看文档', // 分享描述    link: 'http://www.webstr.top', // 分享链接    imgUrl: '', // 分享图标    success: function () {        // 用户确认分享后执行的回调函数    },    cancel: function () {        // 用户取消分享后执行的回调函数    }});//分享到QQ空间wx.onMenuShareQZone({    title: '微信自定义分享', // 分享标题    desc: '仔细看文档', // 分享描述    link: 'http://www.webstr.top', // 分享链接    imgUrl: '', // 分享图标    success: function () {        // 用户确认分享后执行的回调函数    },    cancel: function () {         // 用户取消分享后执行的回调函数    }});//分享到腾讯微博wx.onMenuShareWeibo({    title: ''微信自定义分享', // 分享标题    desc: '仔细看文档', // 分享描述    link: 'http://www.webstr.top', // 分享链接    imgUrl: '', // 分享图标    success: function () {        // 用户确认分享后执行的回调函数    },    cancel: function () {         // 用户取消分享后执行的回调函数    }});


到现在就已经完成了。有什么不懂或者不会的可以在下面留言区留言,think you!