微信小程序对接内容安全检测(保姆级)

别着急,静下心来,看完这篇文章,直接就能完成内容安全检测!

准备操作

  • 你的小程序的appID以及密钥

直接后端代码走起~~~~

我的后端代码是nodejs;大家看着适配,知道逻辑即可。

/ 引入axios请求插件
const axios = require('axios');

// 当前token
let cachedAccessToken = null;

// 当前token有效时间
let accessTokenExpiresAt = 0;

// 获取token
async function getStableAccessToken() {

    // 如果当前token存在 而且没有过期 
    if (cachedAccessToken && (Date.now() < accessTokenExpiresAt)) {
        // 直接返回token
        return cachedAccessToken;
    }

    // 预定义最大请求获取token次数
    const MAX_RETRY = 3;

    // 当前请求获取token次数
    let retryCount = 0;

    // 如果当前请求获取token次数小于最大次数
    while (retryCount < MAX_RETRY) {
        try {
            // 小程序的 APPID
            const APPID = '你的小程序APPID';

            // 小程序的 APPSECRET
            const APPSECRET = '你的小程序密钥';

            // 对接微信官方接口 获取token
            const apiUrl = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`;

            // 发送请求
            const response = await axios.get(apiUrl);

            // 拿到获取的token
            const accessToken = response.data.access_token;

            // 缓存 access_token
            cachedAccessToken = accessToken;

            // 设置当前token的有效时间:当前时间戳 + 7200秒 (官方 access_token 有效期为 2小时)
            // 这里存储毫秒级别 所以*1000 方便判断过期时间
            accessTokenExpiresAt = Date.now() + (7200 * 1000);

            return accessToken;
        }
        // 异常
        catch (error) {
            console.log("获取token失败:", error.message);

            // 增加错误尝试次数
            retryCount++;
        }
    }

    // 如果重试次数达到上限仍然未成功获取 access_token,则抛出错误
    console.log("获取token已超过3次,获取失败!");
    throw false;
}


// 对接微信官方校验文本安全(参数1:要校验的文本内容; 参数2:被检测用户openid)
async function checkContentSafety(content, uid) {
    try {
        // 获取token
        const accessToken = await getStableAccessToken();

        // 预定义对接微信官方接口
        const apiUrl = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token=' + accessToken;

        // 请求内容
        const requestData = {
            content: content,
            version: 2,
            scene: 3,
            openid: uid,
        };

        // 发送请求
        const response = await axios.post(apiUrl, requestData, {
            headers: {
                'Content-Type': 'application/json',
            }
        });

		// 如果收到返回结果
        if (response.data && response.data.result) {
        
        	//如果收到检测结果为100 说明正常
            if (response.data.result.label == 100) {
                return true;
            }
			// 返回结果不是100 就说明为异常;
		    // 这里异常结果我直接一刀切了,大家可以根据自己实际情况决定返回结果;			
            else {
                return false;
            }
        }
        //没有收到返回结果
        else {
            return false;
        }
    }
    // 异常
    catch (error) {
        console.error("校验内容安全失败:", error.message);
        throw false;
    }
}

module.exports = {
    getStableAccessToken,
    checkContentSafety
};


后端在接收请求后,调用封装的检测文本代码

// article_release.js

// 引入封装的文本内容检测
const { checkContentSafety } = require('../../util/checkText');
....
....
....

// 查看文章内容数据是否违规 (检测的文本内容、文章创建用户openid)
var checkRes = await checkContentSafety(articleInfo.articleText, releaseUserInfo.userId);

// 如果检测无异常
if(checkRes){
	... 执行文章发布操作
}
else {
	... 返回文本检测异常提示
}

好了,完成上述操作你就能实现对接微信文本内容安全检测了

如果你觉得这篇文章对你有帮助,欢迎点赞支持一下~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值