由于相关管控,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实现相关推荐

  1. dedecms小程序插件升级到1.4.4(支持百度小程序,微信小程序,头条小程序,QQ小程序,支付宝小程序...)

    从2019年6月份开发到现在 dede织梦小程序插件已经升级到1.4.4版本,现在已经支持:微信小程序,百度小程序,头条/抖音小程序,QQ小程序,支付宝小程序. dedecms小程序插件目前主要的功能 ...

  2. 微信推出“腾讯QQ”小程序;马化腾又要发红包;GitLab 12.5 稳定版发布| 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  3. 【小程序】QQ小程序的入门与开发

    最近QQ小程序也开放了注册,于是公司就注册了小程序,打算把原本微信端的也copy一个到QQ端.打开文档后发现,其实还挺简单的. QQ小程序大概就是微信小程序的翻版.把微信小程序api中的绝大部分或者视 ...

  4. api 定位 微信小程序 精度_一行代码区分微信小程序或QQ小程序

    背景 很多开发者发现微信小程序的代码作为QQ小程序也能运行,可谓是无缝移植,这点为腾讯开发团队点赞. 但是QQ和微信小程序之间的服务端API有所不同,由此产生了一个需求:判断小程序当前是运行在微信还是 ...

  5. 从微信小程序到QQ小程序:云开发CloudBase的一云多端实践

    本文整理自<IGS.全球数字文创大会>上腾讯云云开发CloudBase团队,高级产品经理史燕飞的分享,主要介绍云开发CloudBase的多端探索,及对QQ小程序开发者的全栈支持. 前言 Q ...

  6. 唤醒手腕 - 微信小程序、QQ小程序、抖音小程序学习笔记(更新中)

    Textarea 自动增高 首先就是 qml 页面中,height 属性要绑定 data 中,bindlinechange 检测 textarea 行高变化. <textarea class=& ...

  7. 微信小程序移植qq小程序

    随着微信小程序的越来越成熟,其他平台都相继效仿,所以对我们开发人员来说,不可避免的会有从微信小程序移植到 别的平台,最近公司需要将微信小程序移植到qq小程序,我就写下我的一点小小的经验. qq与微信同 ...

  8. 微信小程序转QQ小程序

    如题,直接把微信小程序代码复制到QQ上,就可以用,API部分WX开头的也可以在QQ上用,目前是这样.不过跳转小程序的地方需要改还有登录逻辑,APPID目前是纯数字.目前QQ开发者工具没有编辑器,我用的 ...

  9. 【服务器】微信小程序转qq小程序

    1.客户端 单独的页面pages以及设置文件app.js app.json app.xxx都是一样的 调用接口的时候把wx.改成qq., 文件名从wxml改成qml之类的 2.服务端 接口调用凭证不一 ...

最新文章

  1. python的pptx文档_通过python-pptx模块操作ppt文件
  2. 对象序列化(六):应用实例-WPF对象的XAML序列化
  3. NOIP练习赛题目5
  4. Unity UGUI——Rect Transform包裹(Anchor Presets)
  5. 参数名称 java_java – 具有重要名称的WSDL中的参数名称
  6. sqlite配置选项
  7. WEB标准有什么好处?
  8. linux系统 32位 64位 jdk下载 jdk6 jdk7
  9. 8uftp怎么使用,小编教你8uftp怎么使用
  10. 河南网上交新房契税打印带章完税证明教程
  11. 2021-03-28
  12. 人们对人工智能的看法(消极篇)
  13. 如何快速上线、部署javaweb项目
  14. 淘宝网店装修代码使用方法大全
  15. 微信小程序《难忘便签》开发记录
  16. Origin 不连续数据点做出连续曲线
  17. JSP基础:(7)jsp分页与文件上传下载
  18. 院士李德毅:大数据认知(演讲全文)
  19. 短时傅里叶变换(STFT)及matlab
  20. 微信云开发 账号管理软件

热门文章

  1. java 命令 一闪而过_tomcat启动不了一闪而过怎么办?tomcat一闪而过无法启动现象的解决方法...
  2. 华为harmonyos 2.0,连接无限可能,华为HarmonyOS 2.0 正式发布
  3. matlab dft,讲解:DFT、Matlab、Matlab、FFTSQL|Matlab
  4. 你是真的“C”——结构体中鲜有人知的“秘密”
  5. Smart Home,让黑客攻击更加Smart
  6. Linux操作系统监控工具-nmon
  7. Python 进度条库 - Tqdm
  8. 一定要记住这20种PS技术,让你的照片美的不行! - imsoft.cnblogs
  9. 每日优鲜破发,不影响叮咚买菜逆市上扬
  10. 如何使用密码管理器-Enpass管理个人密码(macos、win10、Android亲测)