PHP 实现微信小程序敏感图片、内容检测接口

####主要是为了调用微信小程序msgSecCheck、imgSecCheck接口。

1 先附上小程序接口说明文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/sec-check/msgSecCheck.html 2 1、首先要获取access_token(需要appId、appSecret、grant_type这个是固定值); 3 ###msgSecCheck接口: 4 2、用获取到的token带入到微信端的接口地址: https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN5 这里需要注意的是: 1、message信息的格式要是JSON格式,不能直接传string,不然会报 47001,data format error hin 错误。 6 ###imgSecCheck接口: 7 3、用获取到的token带入到微信端的接口地址:https://api.weixin.qq.com/wxa/img_sec_check?access_token=ACCESS_TOKEN8 这里需要注意的是: 1、image的格式要是formdata 格式,不能直接传url,不然会报 41005,media data missing hin 错误。参数名应该使用:media,这是小程序定好的。 9 我这里是获取到微信上传的图片的url,然后把它下载到一个存放临时文件的区/dev/shm,然后再转为curlFile()对象 。 10 附上具体代码: 11 12 /*微信图片敏感内容检测*/ 13 public function imgSecCheck($img) 14 { 15 $img = file_get_contents($img); 16 $filePath = '/dev/shm/tmp1.png'; 17 file_put_contents($filePath, $img); 18 $obj = new CURLFile(realpath($filePath)); 19 $obj->setMimeType("image/jpeg"); 20 $file['media'] = $obj; 21 $token = $this->getAccessToken(); 22 $url = "https://api.weixin.qq.com/wxa/img_sec_check?access_token=$token"; 23 $info = $this->http_request($url,$file); 24 return json_decode($info,true); 25 } 26 27 /*微信文字敏感内容检测*/ 28 public function msgSecCheck($msg) 29 { 30 $token = $this->getAccessToken(); 31 $url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=$token"; 32 $info = $this->http_request($url,json_encode($msg)); 33 return json_decode($info,true); 34 } 35 36 /*获取access_token,不能用于获取用户信息的token*/ 37 public function getAccessToken() 38 { 39 $token_file = '/dev/shm/heka_token.json'; 40 $data = json_decode(file_get_contents($token_file)); 41 if ($data->expire_time < time()) { 42 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; 43 $res = json_decode($this->http_request($url)); 44 $access_token = $res->access_token; 45 if ($access_token) { 46 $data->expire_time = time() + 7000; 47 $data->access_token = $access_token; 48 file_put_contents($token_file, json_encode($data)); 49 } 50 } else { 51 $access_token = $data->access_token; 52 } 53 return $access_token; 54 } 55 56 57 //HTTP请求(支持HTTP/HTTPS,支持GET/POST) 58 private function http_request($url, $data = null) 59 { 60 $curl = curl_init(); 61 curl_setopt($curl, CURLOPT_URL, $url); 62 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 63 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); 64 65 if (!empty($data)) { 66 curl_setopt($curl, CURLOPT_POST, TRUE); 67 curl_setopt($curl, CURLOPT_POSTFIELDS,$data); 68 } 69 curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 70 $output = curl_exec($curl); 71 curl_close($curl); 72 file_put_contents('/tmp/heka_weixin.' . date("Ymd") . '.log', date('Y-m-d H:i:s') . "\t" . $output . "\n", FILE_APPEND); 73 return $output; 74 }

转载的话:记得带上原文链接哦^_^ https://www.cnblogs.com/xinxinmifan/p/9722876.html

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

PHP 实现微信小程序敏感图片、内容检测接口 - HelloWorld