微信网页链接分享自定义

提示:H5 链接在微信内分享,如何自定义链接文字内容,图片等


前言

提示:准备工作

  1. 认证过的公众号
  2. 备案过的域名

一、获取微信网页签名

本文是后台基于php去写的

  1. 接收传入的url,例如想分享 https://baidu.com 这个网页,则传入这个url
public function GetSign(Request $request){
    
    
        $url = $request->input('url');
        $url = urldecode($url);
        $data = (new \App\Services\WxAccountService)->Sign($url);
        return $this->success(0,$data,'请求成功');
    }
  1. 获取签名,其中需要登录公众号,在开发 => 基本配置里面找到AppID和AppSecret,同时记得在 IP白名单中,将你的ip加入白名单。
public function Sign($sUrl){
    
    

        //时间戳
        $nTime = time();
        //随机字符串
        $sStr = $this->randomkeys(16);
        //拼接字符串
        $sSign = "jsapi_ticket=".$this->getJsapiTicket()."&noncestr=".$sStr."&timestamp=".$nTime."&url=".$sUrl;
        $sSigns = sha1($sSign);//签名
        //需要提供给前端的数据
        $data = [
            'appId'=>'****************',//公众号的唯一标识
            'timestamp'=>$nTime,//生成签名的时间戳
            'nonceStr'=>$sStr,//生成签名的随机串
            'signature'=>$sSigns//签名
        ];
        return $data;
    }

    public function getAccessToken(){
    
    
        $appid = '*************';
        $secret = '****************';
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
        $res = $this->curl_get($url);
        $res = json_decode($res,1);
        return $res['access_token'];
    }

    public function getJsapiTicket(){
    
    

        $access_token = $this->getAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$access_token}&type=jsapi";
        $request = $this->curl_get($url);//http请求,贴在下面
        $result = json_decode($request,1);
        return $result['ticket'];
    }

    public function curl_get($url) {
    
    
        $headers = array('User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36');
        $oCurl = curl_init();
        if(stripos($url,"https://")!==FALSE){
    
    
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
        }
        curl_setopt($oCurl, CURLOPT_TIMEOUT, 20);
        curl_setopt($oCurl, CURLOPT_URL, $url);
        curl_setopt($oCurl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );
        $sContent = curl_exec($oCurl);
        $aStatus = curl_getinfo($oCurl);
        curl_close($oCurl);
        if(intval($aStatus["http_code"])==200){
    
    
            return $sContent;
        }else{
    
    
            return false;
        }
    }

    //随机字符串
    function randomkeys($length)
    {
    
    
        $key = '';
        $pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';

        for($i=0;$i<$length;$i++)
        {
    
    
            $key .= $pattern[mt_rand(0,35)]; //生成php随机数
        }
        return $key;
    }

注意:这样设置好之后,就可以请求接口了,但是在本地是无法访问的,需要推到服务器上,如果报需要添加 IP白名单,登录公众号,在开发 => 基本配置里在 IP白名单中,将你的ip加入白名单。

二、添加JS接口安全域名

登录公众号 => 打开公众号设置 => 功能设置 => JS接口安全域名

将你需要转发的网页域名加入,例如 https://test.baidu.com ,就 添加 test.baidu.com

如何上传提示下载的txt文件呢???

只需要上传到,此域名对应的nginx配置规则中指向的文件下 例如

在这里插入图片描述
只需放入wap文件下,然后用 域名/下载的.txt名 访问,如果访问成功,则说明配置成功

保存即可


当两步骤都操作完成,前端会拿着微信网页签名,进行自定义设置。

猜你喜欢

转载自blog.csdn.net/CharmHeart/article/details/115379107