微信小程序和QQ小程序图片安全内容检测接口之ThinkPHP实现
由于相关管控,UGC小程序的开发者,必须要过滤违法违规内容(如黄)。
UGC小程序官方定义:
小程序中的功能或服务中,涉及用户将自己自定义编辑的文字、图片、音频、视频等内容通过小程序进行展示或提供给其他用户的,属于UGC小程序。
拒审条例:
存在平台为允许的服务内容,违反《微信小程序平台运营规范常见拒绝情形3.2》
原因:
小程序提供用户图片处理功能,但是未接入图片安全内容检测接口https://api.weixin.qq.com/wxa/img_sec_check
注意:不要尝试做假调用,审核人员真的会用有颜色的图片来测试!!!
解决方案:
尝试过小程序云开发,但是云函数大小有限制太死,行不通。改自己服务器用php实现安全校验接口。用的是ThinkPHP,你们自行调整。
其实微信小程序和QQ小程序的安全检测接口思路和代码差不多一次,但是为了大家方便参考比对和Copy,就全贴出来了。
微信小程序服务端相关代码
- 图片敏感检测接口
//微信小程序图片敏感检测public function wxImgSecCheck() {$access_token = $this->getMiniToken();$img = request()->param('img');if (empty($img)) {return RJson::error("");}$filePath = $this->saveBase64Image($img, 0);if (empty($filePath)) {return RJson::error("");}$obj = new \CURLFile(realpath($filePath));$obj->setMimeType("image/jpeg");$file['media'] = $obj;$url = "https://api.weixin.qq.com/wxa/img_sec_check?access_token=".$access_token;$info = $this->httpRequest($url,$file);return RJson::success($info);}
- 获取access_token
//微信小程序获取access_tokenprivate function getMiniToken() {$cacheKey = 'miniRcubeAccessToken';$access_token = Cache::get($cacheKey); if (empty($token)) {$appid = "你的APPID";$secret = "你的SECRET";$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret;$jsonResult = file_get_contents($url);$resultArray = json_decode($jsonResult, true);$access_token = $resultArray["access_token"];Cache::set($cacheKey,$access_token,180);}return $access_token;}
QQ小程序服务端相关代码
- 图片敏感检测接口
//QQ小程序图片敏感检测public function qqImgSecCheck() {$access_token = $this->getQQMiniToken();$img = request()->param('img');if (empty($img)) {return RJson::error("");}$filePath = $this->saveBase64Image($img, 1);if (empty($filePath)) {return RJson::error("");}$obj = new \CURLFile(realpath($filePath));$obj->setMimeType("image/jpeg");$file['media'] = $obj;$url = "https://api.q.qq.com/api/json/security/ImgSecCheck?access_token=".$access_token;$info = $this->httpRequest($url,$file);return RJson::success($info);}
- 获取access_token
//QQ小程序获取access_tokenprivate function getQQMiniToken() {$cacheKey = 'miniQQRcubeAccessToken';$access_token = Cache::get($cacheKey); if (empty($token)) {$appid = "你的APPID";$secret = "你的SECRET";$url = "https://api.q.qq.com/api/getToken?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret;$jsonResult = file_get_contents($url);$resultArray = json_decode($jsonResult, true);$access_token = $resultArray["access_token"];Cache::set($cacheKey,$access_token,180);}return $access_token;}
主要代码到这里就完了,下面补充用到的私有方法和类:
- HTTP请求(支持HTTP/HTTPS,支持GET/POST)
//HTTP请求(支持HTTP/HTTPS,支持GET/POST)private function httpRequest($url, $data = null){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if (!empty($data)) {curl_setopt($curl, CURLOPT_POST, TRUE);curl_setopt($curl, CURLOPT_POSTFIELDS,$data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);$output = curl_exec($curl);curl_close($curl);return $output;}
- 保存Base64图片
private function saveBase64Image($base64_image, $ptype) {//保存位置--图片名$image_name =date('His').str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT).".jpg";$group_name = "_" . date('Ymd');$group_path = ROOT_PATH . 'public' . DS . 'static' . DS . 'jjfly'. DS . $group_name;$image_path = $group_path .'/'.$image_name;$http_path = "https://www.iftangtang.com/static/jjfly/" . $group_name . '/'.$image_name;if (!file_exists($group_path)) {mkdir ($group_path,0777,true);}//解码$base64_image = str_replace (" ","+", $base64_image);$base64_image = str_replace('data:image/jpg;base64,', '', $base64_image);$base64_image = str_replace('\n', '', $base64_image);$base64_image = str_replace('\t', '', $base64_image);$decode = base64_decode($base64_image);if (file_put_contents($image_path, $decode)){return $image_path;}return false;}
- 简易封装接口用到的Json返回类:RJson.php
<?phpclass RJson
{/** 状态码code* 200成功,201失败* 1001未登录或登录信息过期,1002为access_toke过期* *///请求成功返回json格式数据public static function success($data='',$msg='操作成功',$code=200){$result = ['data' => $data,'msg' => $msg,'code' => $code];return json_encode($result, JSON_UNESCAPED_UNICODE);}//请求失败返回json格式数据public static function error($msg='操作失败',$code=201,$data=''){$result = ['data' => $data,'msg' => $msg,'code' => $code];return json_encode($result, JSON_UNESCAPED_UNICODE);}
}
微信小程序和QQ小程序图片安全内容检测接口之ThinkPHP实现相关推荐
- dedecms小程序插件升级到1.4.4(支持百度小程序,微信小程序,头条小程序,QQ小程序,支付宝小程序...)
从2019年6月份开发到现在 dede织梦小程序插件已经升级到1.4.4版本,现在已经支持:微信小程序,百度小程序,头条/抖音小程序,QQ小程序,支付宝小程序. dedecms小程序插件目前主要的功能 ...
- 微信推出“腾讯QQ”小程序;马化腾又要发红包;GitLab 12.5 稳定版发布| 极客头条...
整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...
- 【小程序】QQ小程序的入门与开发
最近QQ小程序也开放了注册,于是公司就注册了小程序,打算把原本微信端的也copy一个到QQ端.打开文档后发现,其实还挺简单的. QQ小程序大概就是微信小程序的翻版.把微信小程序api中的绝大部分或者视 ...
- api 定位 微信小程序 精度_一行代码区分微信小程序或QQ小程序
背景 很多开发者发现微信小程序的代码作为QQ小程序也能运行,可谓是无缝移植,这点为腾讯开发团队点赞. 但是QQ和微信小程序之间的服务端API有所不同,由此产生了一个需求:判断小程序当前是运行在微信还是 ...
- 从微信小程序到QQ小程序:云开发CloudBase的一云多端实践
本文整理自<IGS.全球数字文创大会>上腾讯云云开发CloudBase团队,高级产品经理史燕飞的分享,主要介绍云开发CloudBase的多端探索,及对QQ小程序开发者的全栈支持. 前言 Q ...
- 唤醒手腕 - 微信小程序、QQ小程序、抖音小程序学习笔记(更新中)
Textarea 自动增高 首先就是 qml 页面中,height 属性要绑定 data 中,bindlinechange 检测 textarea 行高变化. <textarea class=& ...
- 微信小程序移植qq小程序
随着微信小程序的越来越成熟,其他平台都相继效仿,所以对我们开发人员来说,不可避免的会有从微信小程序移植到 别的平台,最近公司需要将微信小程序移植到qq小程序,我就写下我的一点小小的经验. qq与微信同 ...
- 微信小程序转QQ小程序
如题,直接把微信小程序代码复制到QQ上,就可以用,API部分WX开头的也可以在QQ上用,目前是这样.不过跳转小程序的地方需要改还有登录逻辑,APPID目前是纯数字.目前QQ开发者工具没有编辑器,我用的 ...
- 【服务器】微信小程序转qq小程序
1.客户端 单独的页面pages以及设置文件app.js app.json app.xxx都是一样的 调用接口的时候把wx.改成qq., 文件名从wxml改成qml之类的 2.服务端 接口调用凭证不一 ...
最新文章
- python的pptx文档_通过python-pptx模块操作ppt文件
- 对象序列化(六):应用实例-WPF对象的XAML序列化
- NOIP练习赛题目5
- Unity UGUI——Rect Transform包裹(Anchor Presets)
- 参数名称 java_java – 具有重要名称的WSDL中的参数名称
- sqlite配置选项
- WEB标准有什么好处?
- linux系统 32位 64位 jdk下载 jdk6 jdk7
- 8uftp怎么使用,小编教你8uftp怎么使用
- 河南网上交新房契税打印带章完税证明教程
- 2021-03-28
- 人们对人工智能的看法(消极篇)
- 如何快速上线、部署javaweb项目
- 淘宝网店装修代码使用方法大全
- 微信小程序《难忘便签》开发记录
- Origin 不连续数据点做出连续曲线
- JSP基础:(7)jsp分页与文件上传下载
- 院士李德毅:大数据认知(演讲全文)
- 短时傅里叶变换(STFT)及matlab
- 微信云开发 账号管理软件
热门文章
- java 命令 一闪而过_tomcat启动不了一闪而过怎么办?tomcat一闪而过无法启动现象的解决方法...
- 华为harmonyos 2.0,连接无限可能,华为HarmonyOS 2.0 正式发布
- matlab dft,讲解:DFT、Matlab、Matlab、FFTSQL|Matlab
- 你是真的“C”——结构体中鲜有人知的“秘密”
- Smart Home,让黑客攻击更加Smart
- Linux操作系统监控工具-nmon
- Python 进度条库 - Tqdm
- 一定要记住这20种PS技术,让你的照片美的不行! - imsoft.cnblogs
- 每日优鲜破发,不影响叮咚买菜逆市上扬
- 如何使用密码管理器-Enpass管理个人密码(macos、win10、Android亲测)