微信小程序内容检测接口对接
在发布小程序前,微信官方会对小程序进行审核。假如开发的小程序允许用户发布自定义内容时,微信官方要求应用发布方对其应用的用户发布的内容进行检测,否则无法通过微信官方的审核。
本博文参考的其他博文链接
PHP之 微信【内容安全】“文字、图片” 校验代码.
小程序文字图片内容安全接口开发-PHP
代码实现
<?php
/**
* 微信小程序内容安全检测类(图片/文字敏感信息检测)
*/
class AppletContentCheck
{
private $access_token; //小程序全局唯一后台接口调用凭据
public function __construct($appid, $secret) {
// 获取 access_token
$data = $this->getAccessToken($appid, $secret);
// 给属性赋值
$this->access_token = $data['access_token'];
}
/**
* 获取小程序接口调用凭据 access_token
* @param string $appid 小程序唯一凭证,即 AppID
* @param string $secret 小程序唯一凭证密钥,即 AppSecret
* @return array $data 小程序接口返回数据
*/
public function getAccessToken($appid, $secret) {
// 目标地址
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
// 1.初始化一个cURL会话
$ch = curl_init();
// 2.设置url和相应的选项
curl_setopt($ch, CURLOPT_URL, $url); //设置url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //获取的信息以文件流(json)的形式返回
curl_setopt($ch, CURLOPT_HEADER, FALSE); //不将头文件的信息作为数据流输出
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //不验证对等(SSL)证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); //不检查公用名是否存在,是否与提供的主机名匹配
// 3.执行cURL会话
$json = curl_exec($ch);
// 4.关闭cURL会话,释放系统资源
curl_close($ch);
// 5.对返回的json格式字符串进行解码
$data= json_decode($json,TRUE);
return $data;
}
/**
* 检查文字是否包含敏感信息
* @param string $msg 要检测的文本内容,长度不超过 500KB
* @return array $info 提示信息
*/
public function msgCheck($msg) {
$url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=".$this->access_token;
$array = [
"content" => $msg
];
$info = $this->postURL($url,$array);
return $info;
}
/**
* 校验一张图片是否含有违法违规内容
* @param array $file 要检测的图片内容,大小不超过 750px * 1334px
* @return array $info 提示信息
*/
public function imgCheck($file) {
$url = "https://api.weixin.qq.com/wxa/img_sec_check?access_token=".$this->access_token;
$array = [
"media" => new \CURLFile($file['tmp_name'],$file['type'],$file['name']),
];
$info = $this->postURL($url,$array);
return $info;
}
/**
* cURL通过POST方式请求小程序内容安全接口(HTTPS调用)
* @param string $url 接口的网络地址
* @param array $data 发送数据
* @return array $res 接口返回数据
*/
public function postURL($url, $data) {
// 检查一段文本是否含有违法违规内容
if (array_key_exists("content", $data)) {
$data = json_encode($data,JSON_UNESCAPED_UNICODE);
}
$header = ["Content-type:multipart/form-data;charset='utf-8'","Accept:application/json"];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($ch);
$res = json_decode($output,TRUE);
curl_close($ch);
return $res;
}
}