微信公众号实现长链接转短链接!w.url.cn短网址生成
微信公众号开发者平台提供短网址生成的API,最终生成的短网址是w.url.cn的,下面是详细的代码。
官方文档
https://developers.weixin.qq.com/doc/offiaccount/Account_Management/URL_Shortener.html
请求参数
access_token
action 此处填long2short,代表长链接转短链接
long_url 需要转换的原链接
HTTP POST请求网址
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN
请求流程
1、获取本地缓存的access_token,如果超过有效期,则重新获取,如果还没过期,直接使用缓存的access_token
2、构建请求参数,发起POST请求
3、获得短网址
代码
appid和appsecret可以申请一个微信公众号测试账号进行开发
申请地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
<?php
header("Content-type:application/json");
// 声明APPID、APPSECRET
$appid = "xxx";
$appsecret = "xxx";
// 获取access_token和jsapi_ticket
function getToken(){
$file = file_get_contents("access_token.json",true);//读取access_token.json里面的数据
$result = json_decode($file,true);
//判断access_token是否在有效期内,如果在有效期则获取缓存的access_token
//如果过期了则请求接口生成新的access_token并且缓存access_token.json
if (time() > $result['expires']){
$data = array();
$data['access_token'] = getNewToken();
$data['expires'] = time()+7000;
$jsonStr = json_encode($data);
$fp = fopen("access_token.json", "w");
fwrite($fp, $jsonStr);
fclose($fp);
return $data['access_token'];
}else{
return $result['access_token'];
}
}
//获取新的access_token
function getNewToken($appid,$appsecret){
global $appid;
global $appsecret;
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret."";
$access_token_Arr = file_get_contents($url);
$token_jsonarr = json_decode($access_token_Arr, true);
return $token_jsonarr["access_token"];
}
// 获得长链接
$long_url = trim($_GET["long_url"]);
// 过滤
if (empty($long_url)) {
$result = array(
"result" => "101",
"msg" => "请传入长链接"
);
} else if (strpos($long_url,'http') !== false){
//初始化 CURL
$ch = curl_init();
//请求地址
curl_setopt($ch, CURLOPT_URL, 'https://api.weixin.qq.com/cgi-bin/shorturl?access_token='.getToken());
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
$postdata = '{"action":"long2short","long_url":"'.$long_url.'"}';
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
// 对认证证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
//获取的信息以文件流的形式返回,而不是直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//发起请求
$dwzStr = curl_exec($ch);
//解析数据
$arr_dwzStr = json_decode($dwzStr, true);
$dwz = $arr_dwzStr["short_url"];
//关闭请求
curl_close($ch);
// 返回结果
$result = array(
"result" => "100",
"msg" => "解析成功",
"dwz" => $dwz
);
}else{
$result = array(
"result" => "102",
"msg" => "长链接不合法"
);
}
// 返回JSON
echo json_encode($result,JSON_UNESCAPED_UNICODE);
?>
生成示例
{“result”:”100″,”msg”:”生成成功”,”dwz”:”https://w.url.cn/s/AVuvUup”}
相关推荐: 微擎“could not resolve ”、“could not resolve host系列问题处理办法
今天一个用户跟我说模块安装出现”could not resolve host:update.we10d.cn“报错,昨天在整理最近十个月用户搜索关键词排行的时候也发现”could not resolve host“、”could not resolve“还是占…
关注微信公众号『OOINK』
第一时间了解最新资源动态关注OO.INK不迷路~
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 下载资源需要解压密码,解压密码是什么?
2、分享目的仅供大家学习和交流,请不要用于商业用途!
3、本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
4、如有链接无法下载、失效或广告,请联系管理员处理!
5、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
OO.INK资源网 » 微信公众号实现长链接转短链接!w.url.cn短网址生成