uniapp云对象敏感词校验

目录

1.创建云对象

2.编辑文本

3.编写vue调用云函数检验

4.演示结果


1.创建云对象

复制代码
const FormData = require('form-data');

// 获取 access_token 的函数
async function getAccessToken(appid, secret) {
    const res = await uniCloud.httpclient.request(
        `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`,
        {
            method: 'GET',
            dataType: 'json'
        }
    );
    if (res.status === 200 && res.data.access_token) {
        return res.data.access_token;
    } else {
        console.log('获取 access_token 失败:', res.data.errmsg);
        return null;
    }
}

// 检测是否有敏感词
exports.checkText = async function(access_token, content) {
    const res = await uniCloud.httpclient.request(
        `https://api.weixin.qq.com/wxa/msg_sec_check?access_token=${access_token}`,
        {
            method: 'POST',
            data: {
                content: content
            },
            contentType: 'json',
            dataType: 'json'
        }
    );
    if (res.status === 200 && res.data.errcode === 0) {
        return {
            code: 0,
            msg: '没有敏感词'
        };
    } else if (res.data.errcode === 40001) {
        // access_token 无效,重新获取
        const newAccessToken = await getAccessToken('你的appid', '你的secret');
        if (newAccessToken) {
            return await this.checkText(newAccessToken, content);
        }
    }
    console.log('接口返回错误信息:', res.data.errmsg);
    return {
        code: -1,
        msg: '含有敏感词'
    };
};


exports.main = async function(params) {
    let newParams = params.params ? params.params[0] : params;
    if (newParams && newParams.action === 'getAccessToken') {
        return await getAccessToken(newParams.appid, newParams.secret);
    } else(newParams && newParams.action === 'checkText') {
        return await this.checkText(newParams.access_token, newParams.content);
    } 
    console.log('未匹配到正确的 action');
    return {
        code: -1,
        msg: '未指定正确的操作'
    };
};

2.编辑文本

基础代码

复制代码
<template>
	<view>
		<textarea placeholder="请输入..." maxlength="140" v-model="content"></textarea>

		<view class="footers" @click="submitBtn()">
			<view>提交</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				content: '',
				accessToken: ''
			}
		},
		onLoad() {

		},
		methods: {
			
			submitBtn() {
				if (this.content == '') {
					uni.showToast({
						title: '请输入反馈内容',
						icon: 'none',
						duration: 1000
					});
					return
				}
				
			}
		}
	}
</script>

3.编写vue调用云函数检验

复制代码
<template>
    <view class="wraps">
        <view class="boxs">
            <textarea placeholder="请输入..." maxlength="140" v-model="content"></textarea>
        </view>

        <view class="footers" @click="submitBtn()">
            <view>提交反馈</view>
        </view>
    </view>
</template>

<script>
export default {
    data() {
        return {
            content: '',
            appid: '你的appid',
            secret: '你的secret'
        };
    },
    onLoad() {},
    methods: {
        async submitBtn() {
			console.log('触发')
            if (this.content === '') {
                uni.showToast({
                    title: '请输入反馈内容',
                    icon: 'none',
                    duration: 1000
                });
                return;
            }
            const cloudObj = uniCloud.importObject('你的云对象名称');
            const res = await cloudObj.main({
                action: 'checkText',
                appid: this.appid,
                secret: this.secret,
                content: this.content
            });
            if (res.code === 0) {
               console.log('提交成功')
            } else {
               console.log('提交失败')
            }
        }
    }
};
</script>

4.演示结果

相关推荐
夏碧笔2 天前
uni-app跨端地图实战:用第三方LBS替代微信平台收费服务
uni-app
用户6990304848757 天前
try catch使用场景 处理同步代码错误兼容用的
javascript·uni-app
ITKEY_7 天前
uniapp微信开发者工具 更改AppID失败 touristappid
uni-app
Geek_Vison7 天前
APP瘦身实战:从80MB+砍到15MB——基于小程序容器技术剥离APP非核心业务的实践分享
小程序·uni-app·mpaas
CHB8 天前
HDC2026 演讲实录|AI 驱动的跨端进化:利用 uni-agent 快速构建高性能鸿蒙应用
uni-app·harmonyos
2501_915918418 天前
iOS App性能测试工具的实现方法与优化循环指南
android·ios·小程序·https·uni-app·iphone·webview
斯内普吖8 天前
(开源)高校素拓分管理系统小程序实战指南 基于 Java + SpringBoot + uni-app + Vue + MySQL
java·spring boot·mysql·小程序·uni-app·开源
海阔天空66888 天前
uniapp开启调试模式
uni-app·uniapp开启调试模式
anyup9 天前
分享 5 套 uni-app 实用主题,一键适配暗黑模式
前端·uni-app·视觉设计
gg159357284609 天前
Uni-app跨平台开发全解课程:从零基础到企业级多端落地实战
vue.js·uni-app