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.演示结果

相关推荐
iOS阿玮21 小时前
AppStore卡审依旧存在,预计下周将逐渐恢复常态!
uni-app·app·apple
郑州光合科技余经理1 天前
开发实战:海外版同城o2o生活服务平台核心模块设计
开发语言·git·python·架构·uni-app·生活·智慧城市
行走的陀螺仪1 天前
在UniApp H5中,实现路由栈的持久化
前端·javascript·uni-app·路由持久化·路由缓存策略
影子打怪1 天前
uniapp通过plus.geolocation.watchPosition获取的坐标格式转换
uni-app
忒可君1 天前
2026新年第一篇:uni-app + AI = 3分钟实现数据大屏
前端·vue.js·uni-app
行走的陀螺仪1 天前
UniApp 横向可滚动 Tab 组件开发详解
uni-app·封装组件·tabs·自定义封装组件·可滚动组件tab
00后程序员张1 天前
在 iPhone 上进行 iOS 网络抓包的实践经验
android·ios·小程序·https·uni-app·iphone·webview
2501_915918411 天前
介绍如何在电脑上查看 iPhone 和 iPad 的完整设备信息
android·ios·小程序·uni-app·电脑·iphone·ipad
2501_916008891 天前
没有 Mac 如何在 Windows 上创建 iOS 应用描述文件
android·macos·ios·小程序·uni-app·iphone·webview
Rysxt_1 天前
uni-app路由跳转完全指南:从基础到高级实践
uni-app