vue-cookie 设置过期时间之关闭浏览器清除 cookie 2557

vue-cookie 设置过期时间及关闭浏览器清除 cookie

后台基本开发规范 2632

后台基本开发规范

vue 使用 uuid 报错:uuid has no default export 3161

vue 在使用 uuid 的时候报这个错误如何解决:uuid has no default export

vue 包含别名的图片地址如何动态加载 2909

vue 包含别名的图片地址如何动态加载。如:imgurl = "@img/1.png"

vue 获取非200状态码返回的 response 数据 1681

如何获取非200状态码返回的 response 数据

jenkins 搭建 vue 自动发布平台 1705

如何用 jenkins 搭建一个 vue 项目的自动发布平台

腾讯云 cdn 的使用及添加 cname 报错:解析记录已存在 3000

首次开通腾讯云送了120G的 cdn 流量,虽然本博客没多少人看,但是本着不浪费的精神,还是去配置了下 cdn

华为云对象存储 obs 文件流上传 4110

laravel 支持华为云对象存储 obs 文件流上传

华为云对象存储 obs 基于表单上传文件 4982

记录华为云对象存储 obs 基于表单上传文件

php 华为云对象存储安装( obs 安装) 5446

在 laravel 下安装 obs 依赖包,安装华为云对象存储依赖包

小提示

如有侵权请邮件通知

ftfoolish - 求知若饥,虚心若愚
vue-cookie 设置过期时间之关闭浏览器清除 cookie 2618

vue-cookie 设置过期时间及关闭浏览器清除 cookie

后台基本开发规范 2688

后台基本开发规范

vue 使用 uuid 报错:uuid has no default export 3225

vue 在使用 uuid 的时候报这个错误如何解决:uuid has no default export

vue 包含别名的图片地址如何动态加载 2970

vue 包含别名的图片地址如何动态加载。如:imgurl = "@img/1.png"

vue 获取非200状态码返回的 response 数据 1713

如何获取非200状态码返回的 response 数据

jenkins 搭建 vue 自动发布平台 1723

如何用 jenkins 搭建一个 vue 项目的自动发布平台

腾讯云 cdn 的使用及添加 cname 报错:解析记录已存在 3022

首次开通腾讯云送了120G的 cdn 流量,虽然本博客没多少人看,但是本着不浪费的精神,还是去配置了下 cdn

华为云对象存储 obs 文件流上传 4130

laravel 支持华为云对象存储 obs 文件流上传

华为云对象存储 obs 基于表单上传文件 5009

记录华为云对象存储 obs 基于表单上传文件

php 华为云对象存储安装( obs 安装) 5466

在 laravel 下安装 obs 依赖包,安装华为云对象存储依赖包

小提示

如有侵权请邮件通知

微信小程序服务端图片、内容检测接口 - ftfoolish

微信小程序服务端图片、内容检测接口

你好,因用户投诉并经平台审核,你的小程序在用户自定义昵称或头衔、个人资料签名、聊天室、用户评论、上传图片视频、直播等场景。未具备过滤政治有害等违法违规不当信息的机制...你好,因用户投诉并经平台审核,你的小程序在用户自定义昵称或头衔、个人资料签名、聊天室、用户评论、上传图片视频、直播等场景。未具备过滤政治有害等违法违规不当信息的机制...

在做小程序的时候,特别是有评价、上传图片功能时,相信大家都会遇到这种关于小程序接入内容安全能力的警告通知。如果任由发展不予理会,小程序可能会被平台强制下架。

从给出的警告通知可以看出,平台给出了2种解决方案:
  • 1,接入微信公众平台内容安全 API 或通过其他技术手段进行审核;
  • 2,人工审核,也就是用户评价或上传图片之后需后台审核通过之后才能在前台显示。

从给出的解决方案中,我觉得直接调用微信公众平台内容安全 API 是最快最好的一种解决方法,但是做起来却并不是那么容易,特别是一些细节方面的问题。

文档地址:微信官方文档

接口说明:


msgSecCheck: 检查一段文本是否含有违法违规内容。


请求地址:POST https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN


请求参数:

参数名 参数类型 默认值 是否必填 说明
access_token string 接口请求凭证(在请求链接上加上即可,无需通过 post 提交)
content string 要检测的文本内容,长度不超过 500KB

代码示例:

//获取token并保存 redis
public function getAccessToken() 
{
    $access_token = Cache::store('redis')->get('wx_mini_access_token');
    if(empty($access_token)) {
        $config = Config::get('weMini');
        $appid = $config["AppID"];
        $secret = $config["AppSecret"];
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
        $result = file_get_contents(sprintf($url,$appid,$secret));
        $result = json_decode($result, true);
        Log::record('获取小程序access_token:request=' . var_export(sprintf($url,$appid,$secret), true));
        Log::record('获取小程序access_token:response=' . var_export($result, true));
        if(isset($result['access_token']) && !empty($result['access_token'])) {
            Cache::store('redis')->set('wx_mini_access_token', $result['access_token'], (intval($result['expires_in']) - 300));
            $access_token = $result['access_token'];
        } else {
            return false;
        }
    }
}

//请求方法
private function http_request($url, $data = null)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);

    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;
}

//内容检测(写出关键步骤,一些非空、请求失败判断省略)
public function msgSecCheck() 
{
    $msg = $_POST['msg'];
    //获取微信请求凭证
    $access_token = $this->getAccessToken();
    $url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=".$access_token;
    $data['content'] = $msg;
    $requestData = json_encode($data, JSON_UNESCAPED_UNICODE);
    $result = $this->http_request($url, $requestData);
    var_dump($result);
}

imgSecCheck:校验一张图片是否含有违法违规内容。


请求地址:POST https://api.weixin.qq.com/wxa/img_sec_check?access_token=ACCESS_TOKEN


请求参数:

参数名 参数类型 默认值 是否必填 说明
access_token string 接口请求凭证(在请求链接上加上即可,无需通过post提交)
media FormData 要检测的图片文件,格式支持PNG、JPEG、JPG、GIF,图片尺寸不超过 750px x 1334px

示例代码:

//上传图片
public function upload()
{
    $files = request()->file('pic');
    $config = Config::get("upload");

    foreach($files as $file) {
        $fileAttr = $file->getInfo();
        #存放到临时文件夹用于检测图片是否违规
        $savename = 'temporary' . DS . date("Ymd") . DS . getRandom(16,'0123456789abcdefghijklmnopqrstuvwxyz');
        $info = $file->move($config['path'],$savename);
        if ($info) {
            $pathName = $info->getPathName();
            if(in_array(strtolower($fileAttr['type']), ['image/png','image/jpg','image/jpeg','image/gif'])) {
                #图片检测(微信接口)
                $access_token = $this->getAccessToken();
                $cfile = new \CURLFile(realpath($pathName));
                $cfile->setMimetype($fileAttr['type']);
                $data['meida'] = $cfile;
                $url = "https://api.weixin.qq.com/wxa/img_sec_check?access_token=".$access_token;
                $result = $this->http_request($url, $data);
                var_dump($result);
            }
        } 
    }   
}

小提示

如有侵权请邮件通知