服务端生成签名等数据
/**
* 微信分享好友朋友圈
*
* @param [string] $url
* @return void
*/
public function createSign($url)
{
$noncestr = uniqid();
$timestamp = time();
$jsapi_ticket = getTicket();
$string = 'jsapi_ticket=' . $jsapi_ticket . '&noncestr=' . $noncestr . '×tamp=' . $timestamp . '&url=' . $url;
$signature = sha1($string);
//签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同
//签名用的url必须是调用JS接口页面的完整URL
$data=[
'noncestr'=> $noncestr,
'timestamp'=> $timestamp,
'signature'=> $signature,
'appId'=> '你的微信公众号appId',
'link' => $url,
];
return $data;
}
/**
* 获取签名所需的jsapi_ticket
* jsapi_ticket(有效期7200秒,每日请求有次数限制,开发者最好在自己的服务器做好缓存)
*
* @return void
*/
public function getTicket()
{
//查询本地是否有未过期的jsapi_ticket
//jsapi_ticket已过期或者不存在
$token = getAccessToken();
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$token.'&type=jsapi';
$tmp = crul($url);
$obj = json_decode($tmp, true);
//本地更新新的jsapi_ticket
return $obj['ticket'];
}
/**
* 获取签名所需的access_token
* access_token(有效期7200秒,每日请求有次数限制,开发者最好在自己的服务器做好缓存)
*
* @return void
*/
public function getAccessToken() {
//查询本地是否有未过期的access_token
//access_token已过期或者不存在
$appid= '公众号appid';
$secret = '公众号secret';
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='. $appid.'&secret='. $secret;
$tmp = crul($url);
$obj = json_decode($tmp, true);
//本地更新新的access_token
return $obj['access_token'];
}
调用JS接口的页面
//引入JS文件
<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
//通过config接口注入权限验证配置
<script>
wx.config({
debug: true, // 调试模式是否开启,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '后台返回appId',
timestamp: '后台返回timestamp',
nonceStr: '后台返回nonceStr',
signature: '后台返回signature',
jsApiList: [
'updateAppMessageShareData', //分享给朋友及分享到QQ
'updateTimelineShareData', //分享到朋友圈及分享到QQ空间
]
});
wx.ready(function () {
wx.updateAppMessageShareData({
title: '分享标题',
desc: '分享描述',
link: '分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致',
imgUrl: '分享图标',
success: function () {
console.log('分享成功')
}
})
wx.updateTimelineShareData({
title: '分享标题',
link: '分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致',
imgUrl: '分享图标',
success: function () {
console.log('分享成功')
}
})
});
<script>
微信文档地址
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4