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

相关推荐
小徐_233312 小时前
Wot UI v1 升级 v2?这份迁移指南帮你少踩坑!
前端·微信小程序·uni-app
游戏开发爱好者817 小时前
使用Fiddler设置HTTPS抓包诊断Power Query网络问题
android·ios·小程序·https·uni-app·iphone·webview
棋宣21 小时前
uni-app编译到微信小程序中,父传子props首次传递数据不接收的bug
微信小程序·uni-app·bug
阳光先做2 天前
uniapp打包鸿蒙安装包问题
uni-app
码海扬帆:前端探索之旅2 天前
深度定制 uni-combox:新增功能详解与实战指南
前端·vue.js·uni-app
计算机学姐2 天前
基于微信小程序的图书馆座位预约系统【uniapp+springboot+vue】
vue.js·spring boot·微信小程序·小程序·java-ee·uni-app·intellij-idea
中犇科技3 天前
电商app源码系统推荐|开源 uniapp 商城系统
uni-app
海水冷却3 天前
uniapp 实现直播功能的完整方案与实战指南
uni-app
wuxianda10303 天前
Object-C/Swift/UniApp项目苹果商店上架3天极速解决方案汇报总结
ios·uni-app·objective-c·cocoa·苹果上架
WKK_3 天前
uniapp 微信小程序使用TextEncoder,arrayBufferToBase64
微信小程序·小程序·uni-app