今天需要获取微信小程序用户唯一标识openid。一开始发现了前端是无法发起请求获取openid的,需要前端获取code后,把code传给后端,由后端获取,再把openid返回给前端。后端也是我一个人搞的,后端用的node的express。然后在网上查了查资料,发现很少有关用express请求微信小程序地址的,开始了我的探索踩坑之旅。
首先安装require包。
npm install require
引入
const request = require('request')
使用
let appId = '你的appId '
let appSecret = '你的app密钥'
let code = req.body.code //前端传过来的code
request({
url: `https://api.weixin.qq.com/sns/jscode2session`,
method: "GET",
data: {
js_code: code,
appid: appId,
secret: appSecret,
grant_type:'grant_type'
},
},(error,res,body)=>{
console.log(error,'error')
console.log(res.data,'res')
console.log(body,'body')
})
结果并没有返回我预期的结果。{"errcode":41002,"errmsg":"appid missing, rid: 6358d905-137102ea-25016539"} body
一开始以为我的输入有错,查了一下代码,又上网找了各种资料,依旧不解。后面看了微信的开发文档,感觉我的也没问题。后面感觉是data携带数据的问题。然后换成地址传参。
url: `https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`,
居然这样就跑通了,传回来openid和session_key。但是我在前端直接发起微信请求wx.request的时候,是可以传回来正确的openid和session_key(不检验域名)。可能是node引入的require没有把data数据转化的问题。这里记录一下node的require发起微信小程序api请求,让后来的人不用踩这么多坑。
"session_key":"9Ub················","openid":"oe··········1p·"} body
dddauth.code2Session | 微信开放文档 (qq.com)f