记一次小程序图片安全接口和CountDownLatch的使用

背景:

我们的小程序由于之前没接入微信官方提供的信息安全接口,导致被警告,下掉了被搜索的权限(手动狗头)。然后这两天就花时间在接入上面了,遇到的坑还是挺多的。


微信原开发文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.imgSecCheck.html主要是有两种东西:1、文本消息审核:msgSecCheck2、图片审核:imgSecCheck其实还有一个:mediaCheckAsync,这个是异步审核的,文档下面说:异步检测结果在 30 分钟内会推送到你的消息接收服务器。我们的小程序是一个社区,需要同步检测,所以这个就pass了(狗头)。


开发过程:

0、这两个接口的统一返回结果:

返回结果

所以就返回的字符串判断为0就完事了。


1、获取token

这两个接口都需要获取到access_token,获取方式就这个东西来:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html


2-1、文本审核

文本审核的就比较粗暴了,POST请求到:https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKENbody里面传递一个{"content":"hello world"}看返回结果就完事了。


2-2、图片审核

那就是比较麻烦的图片审核接口了。开发文档里面可以看到

图片审核接口请求参数

他是需要一个FormData的参数,这个就比较恶心了,不能直接把图片的url传过去,需要设置一个类似file的文件。这个后面要处理也不是特别难,我们用的是HttpClient,先接收url参数,再使用HttpGet(HttpPost也行),返回url的response,接着他里面有一个获取文件流的方法,简单不设置参数的写法:

HttpClient请求图片url获取流对象

然后需要将流转化为file

都是一些最基本的,并没有设置参数啥的

结果:接入微信安全信息审核的接口,就只要实现上面,分别就可以实现文本、图片的审核了。但是现在就存在一个问题,图片的审核接口都是只能一张一张审核的,还需要解析成流再下载成文件,后面测试的时候发现,解析出这样一个文件并调用接口返回参数的步骤差不多需要2秒钟的时间。我们的东西像是B博一样,一次性可以发布多张图片的,这样一张一张审核就会花费不少的时间,用户要等待响应,体验就极差。但是不审核又不行,不然他们不给你程序过呀。

在这个基础上面,就想出能不能有增加用户体验的效果的东西来实现这种功能,后来就想到了用多线程来实现,一次性弄几个线程来分别执行一张图片的审核。但是单单声明出多个子线程,后面要怎么汇聚起来得到结果呢?后来又想到,去年刚毕业找工作的时候,发了疯地看一下面试题,特别是一些并发之类的东西,突然就想起来了JUC下面的工具包有个CountDownLatch这玩意。

通俗一点对它的解释就是:声明出某个数值比如为10,共有10个子线程,每一个子线程执行完之后,10就减1,10个子线程执行完之后,10就变成0,这个时候主线程就等待子线程都执行完,才执行后面的流程。所以,我们有几张图片,就在线程池里面声明出几个子线程,子线程中没有报错的话,就CountDownLatch - 1,主线程最后判断等于0的话,才能执行下一步,如果不为0,说明其中有子线程调用微信审核接口出错,有违规图片。

代码截图

HttpClient的配置和线程池、CountDownLatch的声明
循环声明出子线程
创建临时文件
调用审核接口
Latch逻辑
主线程等待

(狗头)上面都没有怎么配置一些header、超时多久,还有一些乱七八糟的东西,为了早点接完这个接口提交申诉也只能这样了,后面有时间的话再看一下能不能优化了。

PS:小程序安全审核接口是真的……谁用谁知道系列(狗头)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容