通過新浪微博API,生成短連結,支援一次性轉多個長連結
什麼是短連結
短連結,通俗來說,就是將長的URL網址,通過程式計算等方式,轉換為簡短的網址字串。
短連結服務
國內各大微博都推出了自己的短連結服務。例如新浪微博、騰訊微博等。
為什麼選用新浪微博API
- 新浪微博短連結API是開放的
- 新浪微博短連結API不需要使用者登入
文件查詢連結
使用方法
拿到自己的AppKey後,替換類的成員屬性$appKey的值即可,如下這樣的,$shortUrl是API請求地址
// APPkey,我在網上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = `569452181`;
// 轉短連線API地址
protected $shortUrl = `https://api.weibo.com/2/short_url/shorten.json?`;
其他的,基本不需要配置,直接例項化類ShortLink,然後呼叫方法getShortUrl即可,需要說明的是長連結URL陣列$longUrl裡的值可以傳多個值
當然了,為了方便,我寫為一個類,可以根據自己的需要,進行調整,滿足自己的需求即可。
原始碼
<?php
/**
* 通過新浪微博API,生成短連結,支援一次性轉多個長連結
* Class shortClass
* @time 2018-08-14
* @author gxcuizy
*/
Class ShortLink {
// APPkey,我在網上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = `569452181`;
// 轉短連線API地址
protected $shortUrl = `https://api.weibo.com/2/short_url/shorten.json?`;
/**
* 生成短連結
* @param array $longUrl 長連結陣列
* @return array 返回短連線資料
*/
public function getShortUrl($longUrl = []) {
$code = true;
$msg = `請求成功!`;
$result = [];
// 長連結陣列為空,不處理
if (empty($longUrl)) {
$code = false;
$msg = `長連結資料不能為空`;
return [`code` => $code, `msg` => $msg, `result` => $result];
}
// 拼接請求URL
$longUrlStr = $this->_getLongUrl($longUrl);
$shortUrl = $this->shortUrl;
$appKey = $this->appKey;
$param = `source=` . $appKey . `&` . $longUrlStr;
$curlUrl = $shortUrl . $param;
// 傳送CURL請求
$result = $this->_sendCurl($curlUrl);
return [`code` => $code, `msg` => $msg, `result` => $result];
}
/**
* 獲取請求URL字串
* @param array $longUrl 長連結陣列
* @return string 長連結URL字串
*/
private function _getLongUrl($longUrl = []) {
$str = ``;
foreach ($longUrl as $url) {
$str .= (`url_long=` . $url . `&`);
}
$newStr = substr($str, 0, strlen($str) - 1);
return $newStr;
}
/**
* 傳送CURL請求(GET)
* @param string $curlUrl 請求地址
* @return array 返回資訊
*/
private function _sendCurl($curlUrl) {
// 初始化
$ch = curl_init();
// 設定選項,包括URL
curl_setopt($ch, CURLOPT_URL, $curlUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 執行並獲取HTML文件內容
$output = curl_exec($ch);
// 釋放curl控制程式碼
curl_close($ch);
// Json資料轉為陣列
$result = json_decode($output, true);
return $result;
}
}
// 例項化物件
$shortObj = new ShortLink();
// 多個連線可以直接放到陣列中,類似$longUrl = [`url1`, `url2`, ……]
$longUrl = [`http://blog.y0701.com/index.html`];
// 開始轉長連結為短連結
$result = $shortObj->getShortUrl($longUrl);
print_r($result);
結束語
上面說到的網上查詢得到的一些AppKey,因為來源不明,所以,不建議用於生產環境,需要用於生產環境的話,建議直接在新浪微博開發者平臺裡建立自己的應用就行。