El mini programa WeChat sincroniza los artículos de la cuenta pública de WeChat (2)
En primer lugar, confirme si existen los permisos de interfaz correspondientes. Aquí utilizamos principalmente las interfaces relacionadas con la obtención de materiales. Puede ver que los documentos de interfaz correspondientes todavía tienen los permisos correspondientes.
Después de agregar materiales permanentes, los desarrolladores pueden obtener una lista de materiales permanentes por tipo:
1. Obtenga una lista de materiales permanentes, que también incluye materiales de la cuenta oficial en el sitio web oficial de la plataforma pública Administre los mensajes gráficos, voz, video y otros materiales recién creados en el módulo de gestión.
2. Los materiales temporales no se pueden obtener a través de esta interfaz.
3. Llamar a esta interfaz requiere /cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN
Después de llamar a la lista de materiales, se implementa a través de la vista de desplazamiento del componente de vista en el mini programa que incluye principalmente título, imagen de portada y resumen:
view>
La lista de artículos se obtiene cuando la página se carga por primera vez. :
/**
* Función de ciclo de vida: monitorear la carga de la página
*/
onLoad: función (opciones) {
wx.getSystemInfo({
éxito: (res) => {
this.setData({
altura: res. altura de la ventana
})
}
})
this.getData()
}
Pasos de implementación de la función GetData() La función de solicitud específica se implementa utilizando funciones de la nube Primero, llame a acces_token:
// Archivo de entrada de la función de la nube
const cloud = require. ('wx-server -sdk')
const news = require('New')
cloud.init()
// Función de entrada de función en la nube
exports.main = async (evento, contexto) => {
let token = null;
await cloud.callFunction({
nombre:' token'
}).luego(función(datos){
token = datos.resultado;
});
let offset = evento.offset;
let count = event.count;
<p> let nw = new news(token);
let rst = nw.getWechatPosts(offset,count);
return rst;
} p>
Luego recupere la información de la lista de artículos, obteniendo 10 datos cada vez:
//Obtener la lista de artículos
getData(){
var that = this;
let pgno = this.data.pageNo+1;
let resultado = this.data.res;
wx.cloud .callFunction ({
nombre:'noticias',
datos:{
desplazamiento:this.data.offset,
recuento :this .data.count
},
éxito:función(res){
var resArr = [];
let body = res.result.body;
let total_count = body.total_count;//Número total de imágenes y textos
let item_count = body.item_count;//Número de esta llamada
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;
//Mensaje de texto y de una sola imagen y mensaje de texto y de varias imágenes
for (let j = 0; j < news_item.length; j++) {
let title = news_item[j].title;//title
let url = news_item[j] ].url; //Dirección detallada
let image_url = news_item[j].thumb_url;//Dirección de la imagen de portada
let digest = news_item[j].digest;//Resumen
let autor = news_item[j].author;//autor
let content = news_item[j].content;
resArr.push(new nw (total_count, item_count, título, url, image_url, resumen, autor, contenido));
let res_id = null;
db.collection('content').where({
_id: url
}).get({
éxito: función (res) {
res_id = res.d
ata[0]._id;
}
})
if (res_id === url){
}else{
db.collection('content').add({
datos: {
_id: url,
contenido: contenido ,
título: título
},
éxito: función (res) {
}
} )
}
}
that.setData({
res: result.concat(resArr),
page_total: page_total,
pageNo: pgno,
mud: mud
});
}
}
})
}
El componente de vista de desplazamiento activa la función de implementación de eventos:
lower() {
p>//Número total de páginas 18/10=1
var pageno = this.data.pageNo;
var page = this.data.page_total ;
console.log("Número total de páginas:" + página+","+pageno+"página"+"zuohouy:"+this.data.mud)
if ( pageno > página) {//página 4
wx.showToast({ //Si se completa toda la carga, aparecerá un cuadro emergente
título: 'También tengo un resultado final ',
icono: 'éxito',
duración: 300
});
devuelve falso;
} else { p>
wx.showLoading({ // Para mostrar el efecto, puede agregar un cuadro emergente excesivo para indicar "Cargando"
título: ' Cargando',
icon : 'cargando',
});
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); p>
}
}