获取 access_token

access_token 是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用 access_token。开发者需要进行妥善保存。access_token 的存储至少要保留 512 个字符空间。access_token 的有效期目前为 2 个小时,需定时刷新,重复获取将导致上次获取的 access_token 失效。

在使用敏感文本接口和敏感图片接口都需要access_token参数,获取access_token接口为

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
参数 是否必须 说明
grant_type 此处为 client_credential
appid 小程序的 appid
secret 小程序的 appsecret

正常返回结果

{ "access_token": "ACCESS_TOKEN", "expires_in": 7200 }

其他具体信息查看文档

敏感文本检测

这是接口基于 https 协议。开发者服务器可以调用此接口校验一段文本是否含有敏感信息。接口为

https://api.weixin.qq.com/wxa/msg_sec_check?access_token=ACCESS_TOKEN
参数 是否必须 说明
access_token 接口凭证
content 检测的文本内容

正常返回结果

{
"errcode": "0",
"errmsg": "ok"
}

当 content 内含有敏感信息,则返回 87014

{
"errcode": 87014,
"errmsg": "risky content"
}

其余错误见返回码说明

{
"errcode": 40001,
"errmsg": "invalid credential, access_token is invalid or not latest"
}

示例代码

wx.request({
url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=your app id&secret=your secret',
method: 'GET',
success: (res) => {
var access_token = res.data.access_token;
wx.request({
method: 'POST',
url: `https://api.weixin.qq.com/wxa/msg_sec_check?access_token=${access_token}`,
data: {
content: me.data.title,
},
success(res) {
if (res.errcode !== 87014) {
// 合格
}
},
});
},
fail() {
console.log(res);
},
});

敏感图片检测

这是接口基于 HTTPS 协议。开发者服务器可以调用此接口校验一张图片是否含有敏感信息。接口为

https://api.weixin.qq.com/wxa/img_sec_check?access_token=ACCESS_TOKEN
参数 是否必须 说明
access_token 接口凭证
media 图片文件,支持 jpeg,jpg,png,gif,像素不超过 750*1334

正常返回结果

{
"errcode": "0",
"errmsg": "ok"
}

当图片文件内含有敏感内容,则返回 87014

{
"errcode": 87014,
"errmsg": "risky content"
}

其余错误见返回码说明

{
"errcode": 40001,
"errmsg": "invalid credential, access_token is invalid or not latest"
}

在使用图片接口时候,如以下示例

let formData = new FormData();
formData.append('file', file);
wx.request({
url: `https://api.weixin.qq.com/wxa/img_sec_check?access_token=${access_token}`,
method: 'POST',
data: {
media: formData,
},
success: (res) => {
console.log(res);
},
});

发现报错,百度了都说要 PHP 什么鬼

{ "errcode": 41005, "errmsg": "media data missing hint: [UQNXoA04384524]" }

最后发现解决方法是提交文件时候设置 header 头部信息'Content-Type': 'application/octet-stream',所以在请求的头部添加 header 配置即可

wx.request({
url: `https://api.weixin.qq.com/wxa/img_sec_check?access_token=${access_token}`,
method: 'POST',
header: {
'Content-Type': 'application/octet-stream',
},
data: {
media: formData,
},
success: (res) => {
console.log(res); // {"errcode":0,"errmsg":"ok"}
},
});