微信公众号实现长链接转短链接!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

 

<?phpheader("Content-type:application/json"); // 声明APPID、APPSECRET$appid = "xxx";$appsecret = "xxx"; // 获取access_token和jsapi_ticketfunction 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.jsonif (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_tokenfunction 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" => "长链接不合法" );} // 返回JSONecho json_encode($result,JSON_UNESCAPED_UNICODE);?>

生成示例
{“result”:”100″,”msg”:”生成成功”,”dwz”:”https:\/\/w.url.cn\/s\/AVuvUup”}

为TA充电
人已赞赏
网络技术与安全

如何更换WordPress网站域名

2020-9-22 13:04:00

网络技术与安全

dreamweaver8序列号 dreamweaver8软件激活码

2020-9-23 23:03:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索