微信公衆號開發者平臺提供短網址生成的API,最終生成的短網址是w.url.cn的,下面是詳細的代碼。php
https://developers.weixin.qq.com/doc/offiaccount/Account_Management/URL_Shortener.html
access_token
action
此處填long2short,表明長連接轉短連接long_url
須要轉換的原連接html
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN
一、獲取本地緩存的access_token,若是超過有效期,則從新獲取,若是還沒過時,直接使用緩存的access_token
二、構建請求參數,發起POST請求
三、得到短網址算法
appid和appsecret能夠申請一個微信公衆號測試帳號進行開發,申請地址:http://mp.weixin.qq.com/debug...json
<?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\/AF5p0UM"}
http://www.likeyunba.com/api/wurl/?long_url=長連接
Author:TANKING
Date:2020-09-18
Web:http://www.likeyun.cn
WeChat:face6009api