新浪微博API生成短連結

gxcuizy發表於2019-02-16

通過新浪微博API,生成短連結,支援一次性轉多個長連結

什麼是短連結

短連結,通俗來說,就是將長的URL網址,通過程式計算等方式,轉換為簡短的網址字串。

短連結服務

國內各大微博都推出了自己的短連結服務。例如新浪微博、騰訊微博等。

為什麼選用新浪微博API

  1. 新浪微博短連結API是開放的
  2. 新浪微博短連結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,因為來源不明,所以,不建議用於生產環境,需要用於生產環境的話,建議直接在新浪微博開發者平臺裡建立自己的應用就行。

相關文章