微信分享网页链接显示网站logo标题内容
参考网址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
操作步骤参考网址链接,这里直接上前后端代码
#js
<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
$.ajax({
url: "{:url('index/Weixin/getToken')}",
type: "POST",
async: true,
data: {link: link},
dataType: "json",
success: function (res) {
if(res.code === 0){
weixinShare(res.data)
}else{
console.log(res.msg)
}
}
});
function weixinShare(data) {
var appid = data.appid;
var timestamp = data.timestamp;
var nonceStr = data.nonceStr;
var signature = data.signature;
wx.config({
debug: false,
appId: appid,
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData']
});
wx.ready(function () {
// 分享给朋友及分享到QQ
wx.updateAppMessageShareData({
title: "{$city}",
desc: "{$site['sitename']}",
link: link,
imgUrl: href + '/static/images/logo.png',
success: function () {}
});
// 分享到朋友圈及分享到QQ空间
wx.updateTimelineShareData({
title: "{$site['sitename']}-{$city}",
link: link,
imgUrl: href + '/static/images/logo.png',
success: function () {}
});
});
}
#php
public function getToken()
{
$link = input('post.link/s');
//$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
//$link = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp = time();
$res = Db::name('weixin')->find();
if(($timestamp - $res['access_token_time']) > 7200){
$urlToken = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$res['app_id']."&secret=".$res['app_secret'];
$resToken = CurlGet($urlToken);
if(isset($resToken['access_token'])){
$urlTicket = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$resToken['access_token']."&type=jsapi";
$resTicket = CurlGet($urlTicket);
if(isset($resTicket['ticket'])){
Db::name('weixin')->where([
['app_id', '=', $res['app_id']],
['app_secret', '=', $res['app_secret']]
])->update([
'access_token' => $resToken['access_token'],
'access_token_time' => $timestamp,
'jsapi_ticket' => $resTicket['ticket'],
'jsapi_ticket_time' => $timestamp,
]);
$ticket = $resTicket['ticket'];
}else{
return jsonErr('获取ticket失败');
}
}else{
return jsonErr('获取token失败');
}
}else{
$ticket = $res['jsapi_ticket'];
}
$noncestr = bin2hex(random_bytes(8));
$string =
"jsapi_ticket=".$ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$link;
$signature = sha1($string);
$data = [
'appid' => $res['app_id'],
'timestamp' => $timestamp,
'nonceStr' => $noncestr,
'signature' => $signature,
'link' => $link
];
return jsonSuc($data);
}