微信小程序-内容检测
Posted 无尘-玩偶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序-内容检测相关的知识,希望对你有一定的参考价值。
一、小程序端实现微信内容检测
1.1、获取access_token
wx.request({ url: \'https://api.weixin.qq.com/cgi-bin/token\', method : \'GET\', data : { grant_type: \'client_credential\', appid: \'小程序的appid \', secret: \'小程序的appsecret \' }, success : function(res){ console.log(res); //正常返回结果 //{"access_token":"ACCESS_TOKEN","expires_in":7200} } })
1.2、文本内容检测
wx.request({ url: \'https://api.weixin.qq.com/wxa/msg_sec_checkaccess_token=\'+access_token, method: \'POST\', data: { content: 文本内容 }, success: function (res) { //当content内含有敏感信息,则返回87014 if (res.data.errcode !== 87014) { // 合格 } } })
1.3、图片检测
let tempFilePaths = res.tempFilePaths; wx.uploadFile({ url: \'https://api.weixin.qq.com/wxa/img_sec_check?access_token=\' + accesstoken, method: \'POST\', filePath: tempFilePaths[i], name: \'file\', header: { \'Content-Type\': \'application/octet-stream\' //一定要设置header头部信息’Content-Type’: ‘application/octet-stream’ }, formData: { media: tempFilePaths[i] }, success: function(res) { if (JSON.parse(res.data).errcode === 87014) { uni.showModal({ content: \'图片中含有内含有敏感信息,禁止上传\', showCancel: false, }); } }, })
二、服务端实现微信内容检测
相信大家会遇到前端由于其他原因不太好实现,需要服务端来实现!接下来直接贴上服务端代码!
2.1、安装需要的依赖包
npm install needle --save // 发送请求
npm install images --save // 图片处理库
2.2、获取access_token
// 获取token static async getToken() { const getMsg = await axios.get(\'https://api.weixin.qq.com/cgi-bin/token\', { grant_type: \'client_credential\', appid: \'小程序appid\', secret: \'小程序appsecret\' }) console.log(\'获取token\', JSON.stringify(getMsg)) if(getMsg.errcode){ throw(getMsg.errmsg) } return { access_token: getMsg.access_token, expires_in: getMsg.expires_in } }
2.3、封装微信内容检测接口
import * as needle from \'needle\' const imagesHandle = require(\'images\') export default class { /** * 检测文字内容是否非法 * @param param.content 文字内容 */ static async msgSecCheck(param: { content: string_t access_token: string_t }) { try { // 调用微信检测违法违规内容接口 let checkMsg: any = await axios.post(`https://api.weixin.qq.com/wxa/msg_sec_check?access_token=${param.access_token}`, { content: param.content }) console.log(\'调用微信检测违法违规内容接口\', JSON.stringify(checkMsg)) if (checkMsg.errcode == 0 && checkMsg.errmsg == \'ok\') { return { success: true } } else { return { success: false, errMsg: checkMsg.errMsg } } } catch (e) { return { success: false, errMsg: e } } } /** * 检测图片内容是否非法 * @param param.media 图片文件流 */ static async imgSecCheck(param: { media: any access_token: string_t }) { // let wx = new WxServer.init() try { let content = param.media.split(\';base64,\') let buffer = Buffer.from(content[1] ? content[1] : content[0], \'base64\') buffer = imagesHandle(buffer).size(100).encode(\'jpg\') let checkMsg: any = await this.doHttp(`https://api.weixin.qq.com/wxa/img_sec_check?access_token=${param.access_token}`, { media: { content_type: \'application/octet-stream\', buffer: buffer } }) return checkMsg } catch (e) { console.log(22222, e) throw(\'错误\') } } // 发送请求 static async doHttp(url, data) { return new Promise(async (resolve, reject) => { needle.post(url, data, { multipart: true }, function (err, resp, body) { if (err) { reject(err); } resolve(body); }) }) } }
2.4、封装调用
export default class { /** * 检测文字内容是否非法 * @param param.content 文字内容 */ static async msgSecCheck(param: { content: string_t }) { // 获取accessToken let tokenMsg = await $RShareToken.checkToken() return await $SContentCheck.msgSecCheck({ content: param.content, access_token: tokenMsg.access_token }) } /** * 检测图片内容是否非法 * @param param.media 图片文件流 */ static async imgSecCheck(param: { media: any }) { // 获取accessToken let tokenMsg = await $RShareToken.checkToken() return await $SContentCheck.imgSecCheck({ media: param.media, access_token: tokenMsg.access_token }) } }
本文章小程序实现内容检测部分参考 微信小程序-敏感内容检测 文本过滤 图片检测 https
以上是关于微信小程序-内容检测的主要内容,如果未能解决你的问题,请参考以下文章