上一篇博文中我們講到了百度短網址介面,那麼這篇文章中我們著重講述的是新浪短鏈的介面。
相比對與百度短連結口來說,新浪短連結口有一個好處就是,可以解析任意網址,而不像百度,會對一些知名度不很高的網址做一屏蔽。但是有一個麻煩的地方就是,短鏈是基於微博開放平台而存在的,因此必須申請APPKEY或者OAuth授權。
那麼我建議的方式是使用APPKEY方式進行開發,為什麼呢?因為OAuth授權是需要使用者登入微博的,我們不可能要求別人使用你的短鏈服務而專門登入一次微博吧?這明顯不現實,也不合理。
申請APPKEY的方式非常簡單,這裡就不再敘述。相信能看到這篇博文的你不會被這些小學生都會的問題難倒吧!
與百度所不同的是,新浪介面沒有給出執行個體代碼。那麼本博文的重點也就來了,寫出一版範例程式碼來。
同樣的,我們仍然使用php作為樣本語言。
這個是短連結轉成長連結的。
需要注意的是新浪的介面地址是用使用的json介面,並且是https安全方式訪問的,所以要選擇忽略認證驗證,否則就需要下載認證了。。
1: <?php
2: private function get_longurl($tinyurl) {
3: $data=array('source' => 'YOU APP KEY','url_short'=>$tinyurl);
4: $api_url = "https://api.weibo.com/2/short_url/expand.json?" . http_build_query($data);
5: $ch=curl_init();
6: curl_setopt($ch,CURLOPT_URL,$api_url);
7: curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
8: //注意,這裡一定得設定為FALSE,否則就需要下載認證
9: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
10: curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
11: $strRes=curl_exec($ch);
12: curl_close($ch);
13: $arrResponse=json_decode($strRes,true)['urls'][0];
14: if ($arrResponse['result']=='true')
15: {
16: return $arrResponse['url_long'];
17: }
18: return $arrResponse['error'];
19: }
20: ?>
這個長鏈轉短鏈的
1: <?
2: private function get_shorturl($longurl) {
3: $data=array('source' => 'YOU APP KEY','url_long'=>$longurl);
4: $api_url = "https://api.weibo.com/2/short_url/shorten.json" . http_build_query($data);
5: $ch=curl_init();
6: curl_setopt($ch,CURLOPT_URL,$api_url);
7: curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
8: //注意,這裡一定得設定為FALSE,否則就需要下載認證
9: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
10: curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
11: $strRes=curl_exec($ch);
12: curl_close($ch);
13: $arrResponse=json_decode($strRes,true)['urls'][0];
14: if ($arrResponse['result']=='true')
15: {
16: return $arrResponse['url_short'];
17: }
18: return $arrResponse['error'];
19: }
要說明的是,新浪的介面是支援批量轉換的,方法是
$data=array('source' => 'YOU APP KEY','url_long'=>$longurl,'url_long'=>$longurl1,'url_long'=>$longurl2,'url_long'=>$longurl3…);
一直傳入參數即可。
而擷取的時候
$arrResponse=json_decode($strRes,true)['urls'][0];
$arrResponse=json_decode($strRes,true)['urls'][1];
$arrResponse=json_decode($strRes,true)['urls'][2];
等等。
希望可以對你有所啟發。