nodejs + axios 调用微信 img_sec_check 接口

一、用这个方法获取 access_token

// 取得微信接口的 access_token
const wxGetAccessToken = async () => {
  const accessToken = await axios.get(
    `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`
  )
  return accessToken.data.access_token
}

二、用这个方法调用 img_sec_check 接口

// 微信图片审核
const wxImgCheck = async (accessToken, file) => {
  const FormData = require('form-data')
  const fs = require('fs')
  const url = `https://api.weixin.qq.com/wxa/img_sec_check?access_token=${accessToken}`
  const stream = fs.createReadStream(file.path)

  const form = new FormData() // 构建表单
  form.append('media', stream) // 添加文件

  // 构建请求头 
  // 不这样做的话无法调用接口
  // 来源:https://cnodejs.org/topic/57e17beac4ae8ff239776de5
  const getHeaders = form => {
    return new Promise((resolve, reject) => {
      form.getLength((err, length) => {
        if (err) { reject(err) }
        const headers = Object.assign({ 'Content-Length': length }, form.getHeaders())
        resolve(headers)
      })
    })
  }

  const headers = await getHeaders(form)
  const res = await axios.post(url, form, { headers })
  return res.data.errcode
}

三、使用

const file = ctx.request.files.file
const accessToken = await wxGetAccessToken()
const errcode = await wxImgCheck(accessToken, file)
if (errcode === 0) {
  // 调用成功
} else {
  // 调用失败
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值