在短地址(也稱短鏈接、縮短地址等)方面,在twitter發展之后就接着發展了起來,而且很多互聯網網站都使用了短地址,國內國外都很多,但穩定和可靠性,還是國內的比較靠譜些,不怕沒牆,國外幾家已經悲劇了,所以如果項目中用到短地址,個人還是建議使用新浪或者其他國內的短鏈接服務。
新浪微博短鏈接API是開放的,而騰訊微博的短地址API沒有開放,本想着通過不一樣的路徑獲取騰訊微博的API的,最后還是以失敗收場。新浪微博短地址API是不需要用戶登錄的,所以直接可以調用,而且速度很快,下面的代碼是從網站找來的,用的是CURL POST的方法,可供參考。
新浪微博短鏈接API文檔在舊版開發文檔中,新版中暫未加入:http://open.weibo.com/wiki/Short_url/shorten
function shortenSinaUrl($long_url){ $apiKey='1234567890';//這里是你申請的應用的API KEY,隨便寫個應用名就會自動分配給你 $apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url; $curlObj = curl_init(); curl_setopt($curlObj, CURLOPT_URL, $apiUrl); curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curlObj, CURLOPT_HEADER, 0); curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json')); $response = curl_exec($curlObj); curl_close($curlObj); $json = json_decode($response); return $json[0]->url_short; } function expandSinaUrl($short_url){ $apiKey='1234567890';//要修改這里的key再測試哦 $apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url; $curlObj = curl_init(); curl_setopt($curlObj, CURLOPT_URL, $apiUrl); curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curlObj, CURLOPT_HEADER, 0); curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:application/json')); $response = curl_exec($curlObj); curl_close($curlObj); $json = json_decode($response); return $json[0]->url_long; }
參照新浪微博的開發文檔,其推薦的是使用get的方法獲取。那代碼就更簡單了
function shorturl($long_url){ $apiKey='1234567890';//要修改這里的key再測試哦 $apiUrl='http://api.t.sina.com.cn/short_url/shorten.json?source='.$apiKey.'&url_long='.$long_url; $response = file_get_contents($apiUrl); $json = json_decode($response); return $json[0]->url_short; } function expandurl($short_url){ $apiKey='1234567890';//要修改這里的key再測試哦 $apiUrl='http://api.t.sina.com.cn/short_url/expand.json?source='.$apiKey.'&url_short='.$short_url; $response = file_get_contents($apiUrl); $json = json_decode($response); return $json[0]->url_long; }
OK,是不是更簡單了?
大家在調試上面的代碼是需要填寫自己的API key哦,不然肯定獲取不到的。
特別提示:短地址服務現在僅對已經認證的APP KEY提供服務,剛申請的APP KEY會被提示無權限。大家可以使用209678993和3818214747兩個KEY做測試,這2個KEY來歷不明,不建議用於生產。(感謝@congxz6688的提醒)
jucelin寫了個調試的文檔,大家可以測試下:
長轉短:http://jucelin.com/lab/short.php?type=1&url=http://jucelin.com
短轉長:http://jucelin.com/lab/short.php?type=2&url=http://t.cn/S4bLBm
就2個參數,type:1表示長轉短,2表示短轉長,后面的URL就是目標域名了,因為比較懶,就沒有寫錯誤判斷,新浪微博短地址不支持短地址再轉短地址的,邏輯上也應該這樣控制。(不信你可以試試)。
