實現微信釋出文章資訊採集

2022-02-14 10:00:09
最近有一個客戶,需要實現這樣一個功能,之前他們在微信公眾平臺釋出文章資訊後,還需要在官網再發布一次,這樣等於是同樣的工作做了兩遍,他們想實現在微信公眾平臺釋出文章後,能夠同時釋出到官網上,小編通過研究,發現微信公眾平臺官網提供了相關的資訊採集介面,原文地址如下:https://developers.weixin.qq.com/doc/offiaccount/Asset_Management/Get_materials_list.html

介面名稱為:獲取永久素材,其實就是新增素材文章時,點選釋出後儲存的文章素材資訊,如下圖:

企業微信截圖_20220212130015.png

只有點選了釋出按鈕儲存到發表記錄--釋出中的文章素材,才可以被採集,如下圖:

企業微信截圖_20220212130206.png

下面小編做詳細說明

介面:

http請求方式:

POST https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN

1 獲取ACCESS_TOKEN

public function getAccessToken(){
    $info = Db::name('access_token')->order('inputtime desc')->find();
    if($info){
        $time = time();
        $long_time = $time - $info['updatetime'];
        if($long_time>=$info['expires_in']){
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->secret;
            $res = $this->getJson($url);
            if(in_array('access_token',$this->DbSy->GetArrElement($res))){
                $insert['access_token'] = $res['access_token'];
                $insert['expires_in'] = $res['expires_in'];
                $insert['updatetime'] = time();
                $up_info = Db::name('access_token')->where('id',$info['id'])->update($insert);
                if(!$up_info){
                    return json(['code'=>103,'msg'=>'AccessToken更新失敗']);
                }
                $AccessToken = $res['access_token'];
            }else{
                return json(['code'=>100,'msg'=>'AccessToken獲取失敗']);
            }
        }else{
            $AccessToken = $info['access_token'];
        }
    }else{
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->secret;
        $res = $this->getJson($url);
        if(in_array('access_token',$this->DbSy->GetArrElement($res))){
            $insert['access_token'] = $res['access_token'];
            $insert['expires_in'] = $res['expires_in'];
            $insert['updatetime'] = time();
            $insert['inputtime'] = time();
            $up_info = Db::name('access_token')->where('id',$info['id'])->insertGetId($insert);
            if($up_info){
                $AccessToken = $res['access_token'];
            }else{
                return json(['code'=>101,'msg'=>'AccessToken插入失敗']);
            }

        }else{
            return json(['code'=>100,'msg'=>'AccessToken獲取失敗']);
        }
    }
    return $AccessToken;
}

注意:

在製作之前需要在資料庫新增資料表:access_token,用來儲存獲取到的access_token值,因為每次獲取到的access_token值的有效時長是7200s,這樣避免重複獲取access_token值。

2 獲取素材列表

獲取到access_token值後,就可以通過access_token值獲取素材列表:

public function getArticleList($offset,$type='news',$length=20){
    $data = array(
        'type'=>$type,
        'offset'=>$offset,
        'count'=>$length
    );
    $json_data = json_encode($data);
    $AccessToken = $this->getAccessToken();
    $url = "https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=".$AccessToken;
    $res = $this->getJsonData($url,$json_data);
    return $res;
    //dump($res);
}

其中:

(1)type,為素材的型別,圖片(image)、視訊(video)、語音 (voice)、圖文(news)

(2)offset,從全部素材的該偏移位置開始返回,0表示從第一個素材返回

(3)count,返回素材的數量,取值在1到20之間

以上就是小編總結的獲取微信公眾平臺已釋出文章素材資訊的方法,如有不足之處敬請諒解,希望能對各位大神有所幫助。

以上就是實現微信釋出文章資訊採集的詳細內容,更多請關注TW511.COM其它相關文章!