logo
3
38
WeChat Login

内容安全接口-604101或者invalid openid#812

Open
created 2 months ago
Edit

云开发环境ID

cloud1-4g4rtmft34cd11a9

问题描述

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const {
    type, // 检测类型:text(文本), image(图片)
    content, // 文本内容(type为text时必需)
    fileID, // 图片fileID(type为image时必需)
    scene = 1 // 场景值:1-社交日记;3-社交论坛;4-社交私聊
  } = event

  try {
    if (type === 'text') {
      // 文本内容安全检测
      if (!content) {
        return {
          success: false,
          error: '缺少检测内容'
        }
      }

      const openid = wxContext.OPENID
      try {
        const result = await cloud.openapi.security.msgSecCheck({
          openid,
          scene,
          version: 2,
          content: content
        })

        // result.result.suggest: pass(通过), review(需人工审核), risky(不适合展示)
        // result.result.label: 100-正常;10001-广告;20001-时政;20002-色情;20003-辱骂;20006-违法犯罪;20008-欺诈;20012-低俗;20013-版权;21000-其他

        const isPass = result.result.suggest === 'pass'
        return {
          success: true,
          isPass,
          suggest: result.result.suggest,
          label: result.result.label,
          detail: result.result,
          ...(isPass ? {} : { errorType: 'content_violation', error: '存在不适合展示信息' })
        }
      } catch (err) {
        // 服务不可用时直接返回微信接口的原始错误信息
        const rawError = err.errMsg || err.message || (err.errCode != null ? `errCode: ${err.errCode}, ${err.errMsg || ''}`.trim() : String(err))
        return {
          success: true,
          isPass: false,
          suggest: 'risky',
          errorType: 'service_unavailable',
          error: rawError,
          errCode: err.errCode,
          errMsg: err.errMsg
        }
      }
    } else if (type === 'image') {
      // 图片内容安全检测
      if (!fileID) {
        return {
          success: false,
          error: '缺少图片文件ID'
        }
      }

      try {
        // 下载图片
        const downloadResult = await cloud.downloadFile({
          fileID
        })

        // 检测图片
        const result = await cloud.openapi.security.imgSecCheck({
          media: {
            contentType: 'image/jpeg',
            value: downloadResult.fileContent
          }
        })

        // errCode: 0-通过;87014-不适合展示
        const isPass = result.errCode === 0
        return {
          success: true,
          isPass,
          errCode: result.errCode,
          errMsg: result.errMsg,
          detail: result,
          ...(isPass ? {} : { errorType: 'content_violation', error: '存在不适合展示信息' })
        }
      } catch (err) {
        // 如果检测接口调用失败

        // 如果是87014错误码,说明图片不适合展示
        if (err.errCode === 87014) {
          return {
            success: true,
            isPass: false,
            errCode: err.errCode,
            errMsg: '图片内容不适合展示',
            errorType: 'content_violation',
            error: '存在不适合展示信息'
          }
        }

        // 其他错误:服务不可用时直接返回微信接口的原始错误信息
        const rawError = err.errMsg || err.message || (err.errCode != null ? `errCode: ${err.errCode}, ${err.errMsg || ''}`.trim() : String(err))
        return {
          success: true,
          isPass: false,
          errorType: 'service_unavailable',
          error: rawError,
          errCode: err.errCode,
          errMsg: err.errMsg
        }
      }
    } else {
      return {
        success: false,
        error: '无效的检测类型'
      }
    }
  } catch (err) {
    return {
      success: false,
      error: err.message || '安全检测失败'
    }
  }
}
{
  "permissions": {
    "openapi": ["security.msgSecCheck", "security.imgSecCheck"]
  }
}

在开发者工具显示-604101,在真机上显示 invalid openid

Creator

经排查,cloud.getWXContext()不返回OPENID,疑似出现在云函数调用云函数或者别的什么情况,只返回 APPID SOURCE和ENV

Creator

https://developers.weixin.qq.com/community/develop/article/doc/000460c053c9504ffb6fb5f885b013

根据第一个评论云函数调用云函数不走网关所以无法获取用户信息……

T

NPC
referenced ISSUE
Assignee
None yet
Label
None yet
Priority
None yet
Time period
-
Property
Add custom properties to record and label key information
Participant