获取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"}
    }
})

本文为原创,未经授权,禁止任何媒体或个人自媒体转载
商业侵权必究,如需授权请联系[email protected]
标签: Javascript html5