正常网页分享到朋友圈不做任何设置的话 微信会自动设置主图片和title作为分享标题。如果想自行设置,可修改jssdk进行设置。具体方法如下:
准备条件:
1,AppID----应用ID
2,AppSecret---应用密钥
3,域名
这两个在微信公众平台->基本配置里可见。
注意:公众号必须是服务号 订阅号不可用哦
参考文献:http://mp.weixin.qq.com/wiki/home/index.html 具体使用过程所遇问题如下:
使用步骤:
1,绑定域名
微信公众平台->公众号设置->功能配置里面设置js接口安全域名。此域名是顶级域名,eg:http://campaign.mioji.com/ 只需输入mioji.com即可
2,引入js文件 http://res.wx.qq.com/open/js/jweixin-1.0.0.js
3,通过设置config接口注入权限验证配置
据开发者文档需求如下:
wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });第一次尝试:js实现
wx.config({
debug: true,
appId: 'wx335239fda95ea29', // 公众号的唯一标识
timestamp: '1450789389', // 生成签名的时间戳
nonceStr: 'ss1200DD467', // 生成签名的随机串
signature: '4067720c9b92b7dba6d65f13342c7febb6c8d464',// 签名
jsApiList: ['onMenuShareTimeline'] // 需要使用的JS接口列表
});
备注:有关签名signature生成:
a:首先生成tocken:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx335239fda95ea29&secret=07274d2729e500793b6691a4a9561cc
b:利用tocken生成ticket:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=XI7aUvykPzyuWLQGsVuJcJ&type=jsapi
c:利用ticket、nonceStr随机串、timestamp时间戳、url生成string:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=http://mp.weixin.qq.com?params=value
d:利用生成的string进行sha1生成签名signature
0f9de62fce790f9a083d5c99e95740ceb90c27ed
由于时间戳并不是固定的 所以签名也不是固定的 PHP修改:
<?php
$timestamp = time();
$nonceStr = 'Wm3WZYTPz0wzccnd';
$ticket = 'sM4AOVdWfPE4DxkXGEs8VOO9lGIrxq5';
$signature = 'jsapi_ticket='.$ticket.'&noncestr='.$nonceStr.'×tamp='.$timestamp.'&url=http://campaign.mioji.com/online/xmas2015';
$signature = sha1($signature);
?>
<script type="text/javascript">
wx.config({
debug: true,
appId: 'wx335239fda952a29', // 公众号的唯一标识
timestamp: '<?php echo $timestamp; ?>', // 生成签名的时间戳
nonceStr: '<?php echo $nonceStr; ?>', // 生成签名的随机串
signature: '<?php echo $signature; ?>',// 签名
jsApiList: ['onMenuShareTimeline'] // 需要使用的JS接口列表
});
</script>
第三次尝试:
ticket失效时间是两个小时,所以不可以写死ticket,php获取
<?php
$timestamp = time();
$nonceStr = 'Wm3WZYTPz0wzccnd';
$ticket = Xmas2015::model()->getTicket();
$signature = 'jsapi_ticket='.$ticket.'&noncestr='.$nonceStr.'×tamp='.$timestamp.'&url=http://campaign.mioji.com/online/xmas2015';
$signature = sha1($signature);
?>
<script type="text/javascript">
wx.config({
debug: true,
appId: 'wx335239fda952a29', // 公众号的唯一标识
timestamp: '<?php echo $timestamp; ?>', // 生成签名的时间戳
nonceStr: '<?php echo $nonceStr; ?>', // 生成签名的随机串
signature: '<?php echo $signature; ?>',// 签名
jsApiList: ['onMenuShareTimeline'] // 需要使用的JS接口列表
});
</script>
getTicket()实现方法如下:public function getTicket()
{
$token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx335239fda9e2a&secret=07274d2729e5020793b661a1';
$re = $this->curl(array(
'url' => $token_url,
'timeout' => 120
));
$token_arr = json_decode($re, true);
$token = $token_arr['access_token'];
$ticket_url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$token.'&type=jsapi';
$re = $this->curl(array(
'url' => $ticket_url,
'timeout' => 120
));
$ticket_arr = json_decode($re, true);
$re = $ticket_arr['ticket'];
return $re;
}
wx.onMenuShareTimeline({
title: '成功分享哦',
link: 'http://www.baidu.com',
imgUrl: 'http://wx.vland.cc/resource/attachment/images/7/2015/01/fl2Lk2p5o3iOJP3jdp9iPXI9i93iPm.jpg',
trigger: function (res) {
alert('用户点击分享到朋友圈');
},
success: function (res) {
alert('已分享');
},
cancel: function (res) {
alert('已取消');
},
fail: function (res) {
alert('wx.onMenuShareTimeline:fail: '+JSON.stringify(res));
}
});
});