- share.html
在需要调用JS接口的页面引入如下JS文件
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
$.ajax({
type: "POST",
url: 'getConfig.php',
dataType: "json",
data:{
url: location.href.split('#')[0]
},
success: function (s) {
wx.config({
debug: false,
appId: s.appid,
timestamp: s.timestamp,
nonceStr: s.noncestr,
signature: s.signature,
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'updateTimelineShareData',
'updateAppMessageShareData',
]
});
}
});
wx.ready(function () {
wx.onMenuShareTimeline({
title: '分享标题',
link: 'https://www.xxx.com',
imgUrl: 'share_icon.png',
success: function () {
}
});
wx.onMenuShareAppMessage({
title: '分享标题',
desc: '分享描述',
link: 'https://www.xxx.com',
imgUrl: 'share_icon.png',
type: '',
dataUrl: '',
success: function () {
}
});
wx.updateTimelineShareData({
title: '分享标题',
link: 'https://www.xxx.com',
imgUrl: 'share_icon.png',
success: function () {
}
});
wx.updateAppMessageShareData({
title: '分享标题',
desc: '分享描述',
link: 'https://www.xxx.com',
imgUrl: 'share_icon.png',
success: function () {
}
})
});
- getConfig.php
如果前端ajax报错,可能是curl_get()方法有问题
<?php
session_start();
function curl_get($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
$res = json_decode($output, true);
curl_close($curl);
return $res;
}
if($_SESSION['jsapi_ticket'] && $_SESSION['jsapi_ticket_expire_time']>=time()){
$jsapi_ticket = $_SESSION['jsapi_ticket'];
}else{
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=secret';
$res = curl_get($url);
$access_token = $res['access_token'];
$url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='.$access_token.'&type=jsapi';
$res = curl_get($url);
$jsapi_ticket = $res['ticket'];
$_SESSION['jsapi_ticket'] = $jsapi_ticket;
$_SESSION['jsapi_ticket_expire_time'] = time()+7200;
}
$noncestr = time().rand(100000, 999999);
$timestamp = time();
$url = $_GET['url'];
$signature = 'jsapi_ticket='.$jsapi_ticket.'&noncestr='.$noncestr.'×tamp='.$timestamp.'&url='.$url1;
$signature = sha1($signature);
$msg = array(
'appid'=>'',
'timestamp'=> $timestamp,
'noncestr'=> $noncestr,
'signature'=>$signature
);
echo json_encode($msg);
exit;