失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信小程序 图片内容安全检测实例总结 security.mediaCheckAsync

微信小程序 图片内容安全检测实例总结 security.mediaCheckAsync

时间:2020-09-23 12:15:33

相关推荐

微信小程序  图片内容安全检测实例总结 security.mediaCheckAsync

踩了很多次坑,终于在微信小程序中搞定了图片内容安全检测。

最开始看的以前的文章用的是老版本的图片安全检测,在开发者工具中是可以跑通的,但是到了真机调试就无法进行图片检测,后来提了个工单,才知道要用新版本的安全检测——security.mediaCheckAsync。发现以前也看到过这个接口,好像是因为是异步的传输结果,而且还是30分钟内给出结果,于是就放弃了,结果选了个老版本。哎!!

话不多说,我们开始:

参考文章:/weixin_55109830/article/details/127143342

本文主要根据参考文章进行,由于版本问题,其中有些坑还是要注意。

由于我们用的是新版本,其中有些参数已经改变,这一点要注意。

第一步:创建云函数

我在这里创建了imgcheck2这个云函数

首先要对云函数的config.json文件进行配置,引入我们要用的接口

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

在index.js中进行调用接口

// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境// 云函数入口函数exports.main = async (event, context) => {const wxContext = cloud.getWXContext()console.log(event)try {const result = await cloud.openapi.security.mediaCheckAsync({media_url: event.value,media_type: 2,version: 2,openid: wxContext.OPENID,scene: 3})return result} catch (err) {return err;}}

注意接口中的参数较以前版本已经改变,且根据文档我们没有填写access_token这个参数

最开始还纳闷这个函数怎么写,查看文档后发现云函数是不用填写的。

最后将云函数进行上传(云端部署),并在云开发工具中添加云函数。

第一步完成。

第二步:创建消息推送

官方说是在30分钟内将结果推送,看着有点吓人,但实测一张图片在10秒内会有结果,甚至5秒也有可能。

我们首先需要一个函数来接收传过来的结果消息,我创建了receiveimgcheck这个云函数

配置文件无需改动,只要将主文件进行编写即可,这是我的代码

// 云函数入口文件const cloud = require('wx-server-sdk')cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境// 云函数入口函数exports.main = async (event, context) => {const wxContext = cloud.getWXContext()await cloud.database().collection('imgCheckResult').add({data:{traceid:event.trace_id,result:event.result.suggest}})return event}

代码非常简单,结果返回到云函数后,将结果result和traceid保存到集合中。

好了接收的云函数有了,下面我们进行配置消息推送

盗用参考文章中的图,点击云开发中的设置、其他设置、推送模式改为云函数、点击添加消息推送,

消息类型选event 、事件类型选wxa_media_check、云函数选刚才创建的云函数。

OK,这样就配置完成了。

第三步 测试

下面是我的测试代码

wx.getFileSystemManager().readFile({// encoding:'ucs2',filePath:this.data.localFilesPath[nr],success(res){console.log(res)var buffer = res.data//传入云函数进行检测wx.cloud.callFunction({name:'imagecheck2',data:{value:wx.cloud.CDN(buffer)},success:res=>{console.log(res) traceIds.push(res.result.traceId) }})}})}

我将本地选取的图片进行读取,保存成buffer类型,用wx.cloud.CDN保存到CDN中,将图片链接传入云函数中,云函数嗲用成功后会返回给我们traceid,可以根据traceid来定位图片,等待几秒后我们就可以在接收云函数的日志中看到结果啦。

并且集合中也上传了结果和traceid

我们根据traceid可以定位到结果。

db.collection('imgCheckResult').where({traceid:traceIds[i]}).get({success: function(res) {}

大功告成,可能我的方法运行时间有点长,如果大家有更好的方案,可以在评论区交流。

如果觉得《微信小程序 图片内容安全检测实例总结 security.mediaCheckAsync》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。