功能说明:在微信浏览器分享出去的内容,需要自定义分享的内容,拿到分享的标题内容和图片,get到展示的要点
问题汇总:
- 下载js-sdk,我用的php版本,找到php文件夹即可。
重要:url要即时的获取,所以在js用ajax请求php返回的配置信息的时候,要传一个参数当前的url(也可以再传一个加密参数,防止有人更改信息,也可以用于php端验证,保证安全性) - 其他直接用js-sdk包php文件夹里的内容即可,要保证服务器端access_token.php和jsapi_ticket.php文件有可写入的权限
- 把服务器的IP加入微信的白名单中
- 设置微信公众平台 => js接口安全域名
- js端 主要是拿到wx.config配置,和需要用到的JsApiList列表
//引入微信提供的公用js
<script typet="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
$.ajax(){
wx.config ({ })
wx.ready(function(){ })
wx.error (function(){ })
}
同级放置不容易出错,
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。上线之后一定改成false
appId: data.appId, // 必填,公众号的唯一标识
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.nonceStr, // 必填,生成签名的随机串
signature: data.signature,// 必填,签名,见附录1
jsApiList: ['openLocation','getLocation','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.error(function(res){
console.log(res); //配置出错(需要检查是哪里的问题)或者url没有在安全域中(测试的话,这个错误可以忽略)
});
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
// 分享事件必须放在这里
wx.onMenuShareAppMessage({
title: '这是一个测试的标题',
desc: '这个是分享奥朋友圈的描述信息',
link: 'http://www.baidu.com',
imgUrl: 'https://www.baidu.com/img/bd_logo1.png',
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
// alert('用户点击发送给朋友');
},
success: function (res) {
alert('分享成功');
},
cancel: function (res) {
alert('你没有分享');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
//alert('已注册获取“发送给朋友”状态事件');
// 微信分享到朋友圈
wx.onMenuShareTimeline({
title: shareTitle, // 分享标题
link: Url, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
// 微信分享到QQ
wx.onMenuShareQQ({
title: shareTitle, // 分享标题
desc: descContent, // 分享描述
link: Url, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
// 分享到腾讯微博
wx.onMenuShareWeibo({
title: shareTitle, // 分享标题
desc: descContent, // 分享描述
link: Url, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
// 分享到QQ空间
wx.onMenuShareQZone({
title: shareTitle, // 分享标题
desc: descContent, // 分享描述
link: Url, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
6. php端的代码
public function getConfig(){
require_once dirname(__FILE__).'/weixin/jssdk.php';
$arr = Yii::$app->request->get();
$arr = json_decode($arr,true);
if($arr['url'] && md5($arr['url']) == $arr['token']){
$jssdk = new JSSDK("appId", "appKey");
$signPackage = $jssdk->GetSignPackage($arr['url']);//动态获取的url
return $signPackage;
}
return false;