新浪微博短連結口與研究

來源:互聯網
上載者:User

上一篇博文中我們講到了百度短網址介面,那麼這篇文章中我們著重講述的是新浪短鏈的介面。

相比對與百度短連結口來說,新浪短連結口有一個好處就是,可以解析任意網址,而不像百度,會對一些知名度不很高的網址做一屏蔽。但是有一個麻煩的地方就是,短鏈是基於微博開放平台而存在的,因此必須申請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];

等等。

希望可以對你有所啟發。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.