首先確認是否有相應的介面許可權,這里主要用到獲取素材相關的介面,可以看到對應介面文檔,個人號還是有對應許可權的。
在新增了永久素材後,開發者可以分類型獲取永久素材的列表:
1、獲取永久素材的列表,也包含租廳跡公眾號在公眾平台官網素材管理模塊中新建的圖文消息、語音、視伏芹頻等素材 。
2、臨時素材無法通過本介面獲取。
3、調用該介面需https協議。
實現的邏輯還是比較簡單的,具體分兩個步驟:
1、獲取公眾號的access_token
獲取公眾號的access_token的在前文中已經實現。
基於微信小程序雲函數的方式獲取微信公眾號access_token -
2、遍歷調用公眾號永久素材列表介面獲取數據
調用素材列表介面,獲取相應的文章信息,這里主要獲取公眾號的圖文信息(type為news),介面調用請求說明:
http請求方式: POST
https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
調取素材列表之後在小程序中通過視圖組件scroll-view來實現,主要有標題、封面圖、摘要:
<scroll-view class="container"scroll-y='true' style="height:{{height}}px" bindscrolltolower='lower'>
<block wx:for="{{res}}" >
<view class='feed-item' id='{{item.title}}' bindtap='getDetial'>
<view>
<text >{{item.title}}</text>
</view>
<view style='text-align: center'>
<image src='{{item.image_url}}'>tupian </image>
</view>
<view>
<text >{{item.digest}}</text>
</view>
</view>
</block>
</scroll-view>
文章列表在弊並頁面首次載入時就獲取:
/**
* 生命周期函數--監聽頁面載入
*/
onLoad: function (options) {
wx.getSystemInfo({
success: (res) => {
this.setData({
height: res.windowHeight
})
}
})
this.getData()
}
函數getData()實現步驟,具體請求函數用雲函數來實現,先從調取acces_token:
// 雲函數入口文件
const cloud = require('wx-server-sdk')
const news = require('New')
cloud.init()
// 雲函數入口函數
exports.main = async (event, context) => {
let token = null;
await cloud.callFunction({
name:'token'
}).then(function(data){
token = data.result;
});
let offset = event.offset;
let count = event.count;
let nw = new news(token);
let rst = nw.getWechatPosts(offset,count);
return rst;
}
然後調取文章列表信息,每次獲取10條信息:
//獲取文章列表
getData(){
var that = this;
let pgno = this.data.pageNo+1;
let result = this.data.res;
wx.cloud.callFunction({
name:'news',
data:{
offset:this.data.offset,
count:this.data.count
},
success:function(res){
var resArr = [];
let body = res.result.body;
let total_count = body.total_count;//總共圖文數量
let item_count = body.item_count;//本次調用數量
let item = body.item;
let page_total = parseInt((total_count + that.data.count - 1) / that.data.count);
let mud = total_count % that.data.count;
const db = wx.cloud.database();
for (let i = 0; i < item.length; i++) {
let news_item = item[i].content.news_item;
//單圖文消息及多圖文消息
for (let j = 0; j < news_item.length; j++) {
let title = news_item[j].title;//標題
let url = news_item[j].url;//詳細地址
let image_url = news_item[j].thumb_url;//封面圖片地址
let digest = news_item[j].digest;//摘要
let author = news_item[j].author;//作者
let content = news_item[j].content;
resArr.push(new nw(total_count, item_count, title, url, image_url, digest, author, content));
let res_id = null;
db.collection('content').where({
_id: url
}).get({
success: function (res) {
res_id = res.data[0]._id;
}
})
if (res_id === url){
}else{
db.collection('content').add({
data: {
_id: url,
content: content,
title: title
},
success: function (res) {
}
})
}
}
that.setData({
res: result.concat(resArr),
page_total: page_total,
pageNo: pgno,
mud: mud
});
}
}
})
}
scroll-view組件到底觸發事件實現函數:
lower() {
//總頁數18/10=1
var pageno = this.data.pageNo;
var page = this.data.page_total;
console.log("總頁數:" + page+",第"+pageno+"頁"+"zuohouy:"+this.data.mud)
if (pageno > page) {//page 4
wx.showToast({ //如果全部載入完成了也彈一個框
title: '我也是有底線的',
icon: 'success',
ration: 300
});
return false;
} else {
wx.showLoading({ //期間為了顯示效果可以添加一個過度的彈出框提示「載入中」
title: '載入中',
icon: 'loading',
});
let offset = this.data.offset;
let count = this.data.count;
offset = this.data.offset + this.data.count;
console.log("offset:" + offset+"count:"+count)
this.setData({
offset: offset,
count: count
});
setTimeout(() => {
this.getData();
wx.hideLoading();
}, 1500);
}
}
❷ 微信公眾號沒靈感去哪裡收集素材
素材資源:
常用的公眾號文章素材資源平台有三個:搜狗微信、西瓜助手、微信搜一搜。
搜狗微信
微信搜一搜
西瓜助手
搜狗微信和微信搜一搜適合直接搜關鍵詞找素材,比如有一個特定的主題,就可以直接搜索查找相關的素材。
西瓜助手適合找熱點文章。上面集合了大量的微信文章素材,根據熱度進行劃分,每天更新快,可以快速獲取各行業的公眾號熱文。
小技巧分享:
平時我會關注大量同行業的公眾號,查看它們的發文,一是收集素材,了解行業熱點;二是學習參考別人的寫作套路、方式、策劃等等,可以找到很多的同行熱點和素材。
在西瓜助手上關注公眾號,可以對大批量的公眾號進行分組管理,相比較微信上使用,方便太多,可以批量查看它們的發文,看到最新熱點,也可以單獨查看某個公眾號的歷史熱文。
我們選擇素材參考或者轉載時,要注意看文章的數據。閱讀量高的文章不一定是最好的的文章。可以根據公眾號歷史發文數據(閱讀數、在看數等)的對比,找到優質的素材。
如果這篇文章和歷史同位置文章對比,閱讀數高、在看數,說明這篇文章表現優秀,是一篇好素材,反之,如果比歷史同位置文章數據差很多,即使閱讀量高,也不一定是篇好文章。
這是我運營公眾號搜集文章的經驗,和你分享。
❸ 求一段微信開發新增永久圖片素材的介面代碼
//素材
const MEDIA_FOREVER_UPLOAD_URL = '/material/add_material?';
const MEDIA_FOREVER_NEWS_UPLOAD_URL = '/material/add_news?';
const MEDIA_FOREVER_NEWS_UPDATE_URL = '/material/update_news?';
const MEDIA_FOREVER_GET_URL = '/material/get_material?';
const MEDIA_FOREVER_DEL_URL = '/material/del_material?';
const MEDIA_FOREVER_COUNT_URL = '/material/get_materialcount?';
const MEDIA_FOREVER_BATCHGET_URL = '/material/batchget_material?';
/**
* 上傳臨時素材,有效期為3天(認證後的訂閱號可用)
* 注意:上傳大文件時可能需要先調用 set_time_limit(0) 避免超時
* 注意:數組的鍵值任意,但文件名前必須加@,使用單引號以避免本地路徑斜杠被轉義
* 注意:臨時素材的media_id是可復用的!
* @param array $data {"media":'@Pathfilename.jpg'}
* @param type 類型:圖片:image 語音:voice 視頻:video 縮略圖:thumb
* @return boolean|array
*/
public function uploadMedia($data, $type){
if (!$this->access_token && !$this->checkAuth()) return false;
//原先的上傳多媒體文件介面使用 self::UPLOAD_MEDIA_URL 前綴
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_UPLOAD_URL.'access_token='.$this->access_token.'&type='.$type,$data,true);
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 獲取臨時素材(認證後的訂閱號可用)
* @param string $media_id 媒體文件id
* @param boolean $is_video 是否為視頻文件,默認為否
* @return raw data
*/
public function getMedia($media_id,$is_video=false){
if (!$this->access_token && !$this->checkAuth()) return false;
//原先的上傳多媒體文件介面使用 self::UPLOAD_MEDIA_URL 前綴
//如果要獲取的素材是視頻文件時,不能使用https協議,必須更換成http協議
$url_prefix = $is_video?str_replace('https','http',self::API_URL_PREFIX):self::API_URL_PREFIX;
$result = $this->http_get($url_prefix.self::MEDIA_GET_URL.'access_token='.$this->access_token.'&media_id='.$media_id);
if ($result)
{
if (is_string($result)) {
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
}
return $result;
}
return false;
}
/**
* 上傳永久素材(認證後的訂閱號可用)
* 新增的永久素材也可以在公眾平台官網素材管理模塊中看到
* 注意:上傳大文件時可能需要先調用 set_time_limit(0) 避免超時
* 注意:數組的鍵值任意,但文件名前必須加@,使用單引號以避免本地路徑斜杠被轉義
* @param array $data {"media":'@Pathfilename.jpg'}
* @param type 類型:圖片:image 語音:voice 視頻:video 縮略圖:thumb
* @param boolean $is_video 是否為視頻文件,默認為否
* @param array $video_info 視頻信息數組,非視頻素材不需要提供 array('title'=>'視頻標題','introction'=>'描述')
* @return boolean|array
*/
public function uploadForeverMedia($data, $type,$is_video=false,$video_info=array()){
if (!$this->access_token && !$this->checkAuth()) return false;
//#TODO 暫不確定此介面是否需要讓視頻文件走http協議
//如果要獲取的素材是視頻文件時,不能使用https協議,必須更換成http協議
//$url_prefix = $is_video?str_replace('https','http',self::API_URL_PREFIX):self::API_URL_PREFIX;
//當上傳視頻文件時,附加視頻文件信息
if ($is_video) $data['description'] = self::json_encode($video_info);
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_UPLOAD_URL.'access_token='.$this->access_token.'&type='.$type,$data,true);
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 上傳永久圖文素材(認證後的訂閱號可用)
* 新增的永久素材也可以在公眾平台官網素材管理模塊中看到
* @param array $data 消息結構{"articles":[{...}]}
* @return boolean|array
*/
public function uploadForeverArticles($data){
if (!$this->access_token && !$this->checkAuth()) return false;
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_NEWS_UPLOAD_URL.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 修改永久圖文素材(認證後的訂閱號可用)
* 永久素材也可以在公眾平台官網素材管理模塊中看到
* @param string $media_id 圖文素材id
* @param array $data 消息結構{"articles":[{...}]}
* @param int $index 更新的文章在圖文素材的位置,第一篇為0,僅多圖文使用
* @return boolean|array
*/
public function updateForeverArticles($media_id,$data,$index=0){
if (!$this->access_token && !$this->checkAuth()) return false;
if (!isset($data['media_id'])) $data['media_id'] = $media_id;
if (!isset($data['index'])) $data['index'] = $index;
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_NEWS_UPDATE_URL.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 獲取永久素材(認證後的訂閱號可用)
* 返回圖文消息數組或二進制數據,失敗返回false
* @param string $media_id 媒體文件id
* @param boolean $is_video 是否為視頻文件,默認為否
* @return boolean|array|raw data
*/
public function getForeverMedia($media_id,$is_video=false){
if (!$this->access_token && !$this->checkAuth()) return false;
$data = array('media_id' => $media_id);
//#TODO 暫不確定此介面是否需要讓視頻文件走http協議
//如果要獲取的素材是視頻文件時,不能使用https協議,必須更換成http協議
//$url_prefix = $is_video?str_replace('https','http',self::API_URL_PREFIX):self::API_URL_PREFIX;
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_GET_URL.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
if (is_string($result)) {
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return $result;
}
return false;
}
/**
* 刪除永久素材(認證後的訂閱號可用)
* @param string $media_id 媒體文件id
* @return boolean
*/
public function delForeverMedia($media_id){
if (!$this->access_token && !$this->checkAuth()) return false;
$data = array('media_id' => $media_id);
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_DEL_URL.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return true;
}
return false;
}
/**
* 獲取永久素材列表(認證後的訂閱號可用)
* @param string $type 素材的類型,圖片(image)、視頻(video)、語音 (voice)、圖文(news)
* @param int $offset 全部素材的偏移位置,0表示從第一個素材
* @param int $count 返回素材的數量,取值在1到20之間
* @return boolean|array
* 返回數組格式:
* array(
* 'total_count'=>0, //該類型的素材的總數
* 'item_count'=>0, //本次調用獲取的素材的數量
* 'item'=>array() //素材列表數組,內容定義請參考官方文檔
* )
*/
public function getForeverList($type,$offset,$count){
if (!$this->access_token && !$this->checkAuth()) return false;
$data = array(
'type' => $type,
'offset' => $offset,
'count' => $count,
);
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_FOREVER_BATCHGET_URL.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 獲取永久素材總數(認證後的訂閱號可用)
* @return boolean|array
* 返回數組格式:
* array(
* 'voice_count'=>0, //語音總數量
* 'video_count'=>0, //視頻總數量
* 'image_count'=>0, //圖片總數量
* 'news_count'=>0 //圖文總數量
* )
*/
public function getForeverCount(){
if (!$this->access_token && !$this->checkAuth()) return false;
$result = $this->http_get(self::API_URL_PREFIX.self::MEDIA_FOREVER_COUNT_URL.'access_token='.$this->access_token);
if ($result)
{
$json = json_decode($result,true);
if (isset($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 上傳圖文消息素材,用於群發(認證後的訂閱號可用)
* @param array $data 消息結構{"articles":[{...}]}
* @return boolean|array
*/
public function uploadArticles($data){
if (!$this->access_token && !$this->checkAuth()) return false;
$result = $this->http_post(self::API_URL_PREFIX.self::MEDIA_UPLOADNEWS_URL.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
/**
* 上傳視頻素材(認證後的訂閱號可用)
* @param array $data 消息結構
* {
* "media_id"=>"", //通過上傳媒體介面得到的MediaId
* "title"=>"TITLE", //視頻標題
* "description"=>"Description" //視頻描述
* }
* @return boolean|array
* {
* "type":"video",
* "media_id":"mediaid",
* "created_at":1398848981
* }
*/
public function uploadMpVideo($data){
if (!$this->access_token && !$this->checkAuth()) return false;
$result = $this->http_post(self::UPLOAD_MEDIA_URL.self::MEDIA_VIDEO_UPLOAD.'access_token='.$this->access_token,self::json_encode($data));
if ($result)
{
$json = json_decode($result,true);
if (!$json || !empty($json['errcode'])) {
$this->errCode = $json['errcode'];
$this->errMsg = $json['errmsg'];
return false;
}
return $json;
}
return false;
}
❹ 微信公眾號文章預覽鏈接短期內失效該怎麼獲得長效鏈接
想必公眾號狗已經留意到了,6月29日公眾號調整:「素材庫文章預覽功能已升級,每次預覽後的鏈接將在短期內失效;鏈接失效規則僅適用於預覽情況,不影響其他功能引用素材庫文章。」雖說預覽鏈接失效,不影響其他功能引用,但是預覽到手機的鏈接都不能轉發到微信群或者朋友圈了!更煩惱的是,原文鏈接里添加素材庫文章,鏈接都很快失效,這可腫么辦?別急,小編教你4種方法,獲取跟原來一樣長期有效的素材庫文章鏈接~
1、用戶消息回復獲取鏈接
根據通告的第二點:「鏈接失效規則僅適用於預覽情況,不影響其他功能引用素材庫文章」,我們可以利用向用戶回復消息獲取素材庫文章鏈接。
首先,用自己的微信向公眾號發送一條任意消息,然後用公眾號回復給自己一條素材庫的圖文消息,親測,這樣獲取到的文章鏈接與原來一樣長效哦!這是最簡單方便的一個方法。
2、自定義菜單欄獲取鏈接
除了用戶消息回復,還有自定義菜單欄可以引用素材庫的文章。為了獲取未群發文章鏈接,先把文章插入在菜單欄,這樣用手機點擊菜單欄相應欄目,就可以獲取到該文章的鏈接了。
弊端:更改了菜單欄設置以後,有時候菜單欄的更新同步到手機微信客戶端需要較長時間。
3、關鍵詞自動回復獲取鏈接
關鍵詞自動回復同樣可以給用戶回復一條素材庫圖文消息。這一方法相對繁瑣些,需要先設置關鍵詞才行~
4、頁面模板獲取鏈接
頁面模板獲取鏈接適用於開通了原創功能的公眾號,對於具備這個功能的公眾號來說,這個方法也非常簡便。首先先新建一個模板,然後添加文章,最後復制鏈接即可。
5、以上,有了這幾種方法應該暫時夠用了。在互聯網和公眾平台日益快速發展的今天,以後也會出現各種各樣有利或不利的功能調整或升級,只有在第一時間找到解決方法的運營者,才能稱之為合格的公眾號狗,共勉~~
❺ 微信公眾號怎樣生成永久鏈接
關注公眾號,然後往公眾號發送消息
1、登錄微信公眾號,點擊左側的「消息管理」。
2、關注公眾號,給公眾號發送一條消息。
3、點擊消息管理,在用戶頭像進入聊天窗口。
4、從素材庫中選擇素材(臨時鏈接需要轉為永久鏈接的素材)然後點擊發送。
5、手機會接受到一條圖文消息打開,復制圖文鏈接即可。
(5)微信獲取永久素材列表擴展閱讀:
微信公眾平台微信主要價值:在於讓企業的服務意識提升,在微信公眾平台上,企業可以更好地提供服務,運營方案上面有很多方式,可以是第三方開發者模式;也可以是簡單的編輯模式。