uniapp云函数使用——内容审核

背景

小程序计划开通自定义头像功能,经过团队讨论,决定使用微信免费内容审核服务对用户自定义头像进行鉴黄和鉴政审核。

技术实现

技术选型

由于小程序采用 uniapp 开发,优先考虑 uniapp 云平台。参考以下资料:

实施步骤

1. 创建云函数文件

在 HBuilderX 中创建新的云函数文件。

2. 关联服务空间

右键点击云函数目录,选择「关联服务空间」,完成服务空间配置。

3. 安装公共库

从插件市场安装所需公共库:

uni-sec-check 依赖 uni-open-bridge 配置,需同时安装 uni-open-bridge

4. 配置小程序信息

uni-open-bridge 配置文件中设置小程序 ID 和密钥:

json

json 复制代码
{
  "dcloudAppid": "__UNI_6E118A6",
  "mp-weixin": {
    "oauth": {
      "weixin": {
        "appid": "你的小程序ID",
        "appsecret": "你的小程序密钥"
      }
    }
  }
}

5. 创建云函数

每个云函数需要包含以下文件:

  • index.js - 主逻辑文件
  • package.json - 依赖配置文件

文本内容审核云函数

javascript

javascript 复制代码
const UniSecCheck = require('uni-sec-check');

exports.main = async (event, context) => {
  try {
    const { content, openid = "", scene = 2, version = 2 } = event;
    
    // 参数校验
    if (!content) {
      return {
        code: 400,
        success: false,
        errMsg: '检测内容不能为空'
      };
    }

    const uniSecCheck = new UniSecCheck({
      provider: 'mp-weixin',
      requestId: context.requestId,
    });

    const checkRes = await uniSecCheck.textSecCheck({
      content,
      openid,
      scene,
      version
    });

    // 处理检测结果
    if (checkRes.errCode === 'uni-sec-check-risk-content') {
      return {
        code: 400,
        success: false,
        errMsg: '内容不合规',
        result: checkRes.result
      };
    } else if (checkRes.errCode) {
      return {
        code: 500,
        success: false,
        errMsg: `检测服务异常: ${checkRes.errMsg}`
      };
    }

    // 检测通过
    return {
      code: 200,
      success: true,
      errMsg: '内容合规'
    };

  } catch (error) {
    console.error('文本检测异常:', error);
    return {
      code: 500,
      success: false,
      errMsg: `服务器内部错误: ${error.message}`
    };
  }
};

头像审核云函数

javascript

javascript 复制代码
const UniSecCheck = require('uni-sec-check')

exports.main = async function(event, context) {
    // 参数校验
    const { url, openid = "", scene = 2, version = 2 } = event
    if (!url) {
      return {
        code: 400,
        success: false,
        errMsg: '缺少图片URL参数'
      }
    }

    // 创建内容安全检测实例
    const uniSecCheck = new UniSecCheck({
      provider: 'mp-weixin',
      requestId: context.requestId
    })

    // 进行图片安全检测
    console.log('开始图片安全检测:', url)
    const imgSecCheckRes = await uniSecCheck.imgSecCheck({
      image: url,
      openid: openid,
      scene: scene,
      version: version
    })

    console.log('图片检测结果:', imgSecCheckRes)

    // 处理检测结果
    if (imgSecCheckRes.errCode) {
      // 图片违规
      return {
        code: 400,
        success: false,
        errMsg: '图片内容违规',
        result: {
          label: imgSecCheckRes.result?.label,
          suggest: imgSecCheckRes.result?.suggest
        }
      }
    }
    
    // 检测通过
    return {
      code: 200,
      success: true,
      errMsg: '图片检测通过',
      data: imgSecCheckRes
    }
}

6. 客户端调用

javascript

php 复制代码
const openid = uni.getStorageSync('user_openid');
if (!openid) {
  uni.hideLoading();
  uni.showToast({
    title: '用户信息获取失败',
    icon: 'none'
  });
  return false;
}

const result = await uniCloud.callFunction({
  name: 'avatarCheck',
  data: {
    url: imageUrl,
    openid: openid,
    scene: 1, // 资料场景(用户头像)
    version: 2
  }
});

注意事项

  1. 用户 openid 需要在用户登录时获取并存储
  2. v2 异步头像审核模式在不配置异步通知的情况下仍可正常使用
  3. 根据返回结果进行相应的业务逻辑处理

如有问题或建议,欢迎在评论区讨论交流

相关推荐
2501_920931707 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得08 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5168 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino9 小时前
图片、文件的预览
前端·javascript
2501_9209317010 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman052811 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔11 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李11 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN11 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒11 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局