小程序開發(fā)的內(nèi)容安全審核

最近做一個帶圖片和文字發(fā)布的微信小程序逛揩,當(dāng)時心里犯嘀咕柠傍,沒有自我審查估摸著上不了。果不其然微信小程序提交代碼審核的時候辩稽,審核不通過惧笛,提示如下:為避免您的小程序被濫用,請你完善內(nèi)容審核機制逞泄,如調(diào)用小程序內(nèi)容安全API患整,或使用其他技術(shù)、人工審核手段喷众,過濾色情各谚、違法等有害信息,保障發(fā)布內(nèi)容的安全侮腹。
得嘲碧,去到后臺一看,審核員測試了一個詞xxx給顯示出來了父阻,直接導(dǎo)致小程序不通過愈涩。

image

好在提示給了解決方案,因此這里做一下記錄加矛。

調(diào)用小程序內(nèi)容安全API

還挺全履婉,我主要用到了圖片和文字審查,所以對security.imgSecChecksecurity.msgSecCheck的使用做記錄斟览。

image

開通云開發(fā)

在微信開發(fā)者工具打開你的小程序工程毁腿,點擊“云開發(fā)”菜單進去,之前沒開的按照提示填寫云開發(fā)環(huán)境名稱就好。

image

創(chuàng)建云函數(shù)

在你小程序工程的app.js同級目錄下創(chuàng)建一個文件夾functions來存放云函數(shù)

image.png

并在project.config.json中配置"cloudfunctionRoot": "functions/",

{
  "description": "項目配置文件",
  "cloudfunctionRoot": "functions/",
  "packOptions": {
    "ignore": []
  }, ...
.......
image

編譯一下已烤,可以看到functions文件夾有變化后面加上了你之前創(chuàng)建的環(huán)境名鸠窗。右鍵functions文件夾喚出菜單新建Node.js云函數(shù)

image

我這里創(chuàng)建了一個名稱叫ContentCheck的云函數(shù),調(diào)用security.imgSecChecksecurity.msgSecCheck需要聲明權(quán)限胯究,需要配置一個config.json文件稍计,如果目錄文件中沒有config.json,需要自己建一個裕循。

image.png

config.json的配置如下:

{
    "permissions": {
        "openapi": [
            "security.msgSecCheck",
            "security.imgSecCheck"
        ]
    }
}

ContentCheck云函數(shù)的目錄結(jié)構(gòu)如下:

├─checkContent
│      config.json       //云調(diào)用的權(quán)限配置
│      index.js         //云服務(wù)器node 入口文件
│      package.json     // NPM包依賴
│ ...

編輯ContentCheck云函數(shù)目錄下的index.js文件

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

cloud.init()

// 云函數(shù)入口函數(shù)
exports.main = async(event, context) => {
  try {
    let msgR = false;
    let imageR = false;
    //  檢查文本內(nèi)容是否違規(guī)
    if (event.msg) {
      msgR = await cloud.openapi.security.msgSecCheck({
        content: event.msg
      })
    }
    //  檢查圖像內(nèi)容是否違規(guī)
    if (event.img) {
      imageR = await cloud.openapi.security.imgSecCheck({
        media: {
          header: {
            'Content-Type': 'application/octet-stream'
          },
          contentType: 'image/png',
          value: Buffer.from(event.img)
        }
      })
    }
    return {
      msgR,
      imageR
    };
  } catch (e) {
    return e
  }
}

編輯完云函數(shù)之后臣嚣,右鍵ContentCheck喚起菜單選擇 上傳并部署:云端安裝依賴

image

注意
使用微信小程序云函數(shù)開發(fā)本地需要實現(xiàn)安裝好Node.js環(huán)境,并配置好環(huán)境變量剥哑,之前新電腦沒裝Node.js環(huán)境導(dǎo)致上傳的云函數(shù)老是調(diào)用失敗硅则,解決辦法是安裝好Node.js就好了。
驗證Node.js是否安裝npm -vnode -version

image

調(diào)用云函數(shù)

app.js初始化云環(huán)境株婴,參數(shù)env可以在云開發(fā)的設(shè)置中可以看到當(dāng)前的環(huán)境ID

//app.js
App({
  onLaunch: function () {
    wx.cloud.init({
      env: "manjaro-7l50h",
      traceUser: true
    })
    ...
  },
})
image
  1. 檢查文字是否違規(guī)

       //  調(diào)用ContentCheck云函數(shù)檢查文字是否違規(guī)
       wx.cloud.callFunction({
         name: 'ContentCheck',
         data: {
           msg: _this.data.msg,
         },
         success(res) {
           console.log(res.result)
           if (res.result.msgR.errCode == 87014) {
             wx.showToast({
               title: '文字違規(guī)',
             })
           }
         }
       })
    
    // 文字違規(guī)打印的console.log(res.result)
    {
     msgR: {
         errCode: 87014,
         errMsg: "openapi.security.msgSecCheck:fail risky content hint: [cSp9ka06218622]"
     },
     imageR: false
    }
    // 文字正常打印的console.log(res.result)
    {
     msgR: {
         errCode: 0,
         errMsg: "openapi.security.msgSecCheck:ok"
     },
     imageR: false
    }
    
  2. 檢查圖片是否違規(guī)

    //  調(diào)用ContentCheck云函數(shù)檢查圖片是否違規(guī)
    wx.cloud.callFunction({
      name: 'ContentCheck',
      data: {
        img: _this.data.img
      },
      success(res) {
        console.log(res.result)
        if(res.result.imageR.errCode == 87014){
          wx.showToast({
            title: '圖片違規(guī)',
          })
        }
      }
    })
    
    // 圖片違規(guī)打印的console.log(res.result)
    {
     msgR: false,
     imageR: {
         errCode: 87014,
         errMsg: "openapi.security.imgSecCheck:fail risky content hint: [LGrV.a05623955]"
     }
    }
    // 圖片正常打印的console.log(res.result)
    {
     msgR: false,
     imageR: {
         errCode: 0,
         errMsg: "openapi.security.imgSecCheck:ok"
     }
    }
    

完整例子 contentSecCheck

Reference

微信小程序官方文檔
小程序評論回復(fù)和發(fā)帖功能實戰(zhàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怎虫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子督暂,更是在濱河造成了極大的恐慌揪垄,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逻翁,死亡現(xiàn)場離奇詭異饥努,居然都是意外死亡,警方通過查閱死者的電腦和手機八回,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門酷愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缠诅,你說我怎么就攤上這事溶浴。” “怎么了管引?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵士败,是天一觀的道長。 經(jīng)常有香客問我褥伴,道長谅将,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任重慢,我火速辦了婚禮饥臂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘似踱。我一直安慰自己隅熙,他們只是感情好稽煤,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著囚戚,像睡著了一般酵熙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弯淘,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天绿店,我揣著相機與錄音吉懊,去河邊找鬼庐橙。 笑死,一個胖子當(dāng)著我的面吹牛借嗽,可吹牛的內(nèi)容都是我干的态鳖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼恶导,長吁一口氣:“原來是場噩夢啊……” “哼浆竭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惨寿,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤邦泄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后裂垦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顺囊,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年蕉拢,在試婚紗的時候發(fā)現(xiàn)自己被綠了特碳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡晕换,死狀恐怖午乓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闸准,我是刑警寧澤益愈,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站夷家,受9級特大地震影響蒸其,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瘾英,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一枣接、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缺谴,春花似錦但惶、人聲如沸耳鸯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽县爬。三九已至,卻和暖如春添谊,著一層夾襖步出監(jiān)牢的瞬間财喳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工斩狱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耳高,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓所踊,卻偏偏與公主長得像泌枪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子秕岛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容