提示:H5 链接在微信内分享,如何自定义链接文字内容,图片等
文章目录
前言
提示:准备工作
- 认证过的公众号
- 备案过的域名
一、获取微信网页签名
本文是后台基于php去写的
- 接收传入的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,'请求成功');
}
- 获取签名,其中需要登录公众号,在开发 => 基本配置里面找到AppID和AppSecret,同时记得在 IP白名单中,将你的ip加入白名单。
public function Sign($sUrl){
//时间戳
$nTime = time();
//随机字符串
$sStr = $this->randomkeys(16);
//拼接字符串
$sSign = "jsapi_ticket=".$this->getJsapiTicket()."&noncestr=".$sStr."×tamp=".$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名 访问,如果访问成功,则说明配置成功
保存即可
当两步骤都操作完成,前端会拿着微信网页签名,进行自定义设置。