微信分享网页链接显示网站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."&timestamp=".$timestamp."&url=".$link;
    $signature = sha1($string);

    $data = [
        'appid' => $res['app_id'],
        'timestamp' => $timestamp,
        'nonceStr' => $noncestr,
        'signature' => $signature,
        'link' => $link
    ];

    return jsonSuc($data);
}

,