微信小程序获取openId
微信小程序获取openId
最近开发微信小程序,需要获取用户openId,在开发过程中遇到了一个细节问题,虽然不是很大,但是稍不注意就会出错。
获取openId需要本地后台向微信服务器发送请求,我本地是Node.js搭建的后台,在请求的url中传入3个参数,分别是code、appId和appSecret,本人就是在传参过程中出现了一个错误,导致获取openId失败。报错信息如:
errcode: 40013,
errmsg: ‘invalid appid rid: 607e3362-03d953f9-5ec49697’
“errcode”:40125,
“errmsg”:“invalid appsecret, view more at http:\/\/t.cn\/RAEkdVq, hints: [ req_id: zeJBxIore-v9KAtA ]”
“errcode”:40029,
“errmsg”:“invalid code, hints: [ req_id: 1eJBGzyFe-oyX_ka ]”
一、先来看一下我的代码
前端代码
wx.login({
success:async (res) => {
let code=res.code;
//2.将登录凭证发送到服务器
let result=await request("/getOpenId",{code:code});
console.log(result)
}
})
本地后台代码
// 注册获取用户openId的接口
app.use("/getOpenId",async (req,res,next) => {
let code=req.query.code;
let appId="wx*************";//自己的appId
let appSecret="*************************";//自己的secret
//3.发送请求给微信服务器
let url="https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code";
let result=await fly.get(url);
console.log(result)
res.send("测试数据")
})
编译并运行……结果……………
二、本地后台报错信息
appId无效(错误代码:40013)
errcode: 40013,
errmsg: 'invalid appid rid: 607e3362-03d953f9-5ec49697'
appSecret无效(错误代码:40125)
"errcode":40125,
"errmsg":"invalid appsecret, view more at http:\\/\\/t.cn\\/RAEkdVq, hints: [ req_id: zeJBxIore-v9KAtA ]"
code无效(错误代码:40029)
"errcode":40029,
"errmsg":"invalid code, hints: [ req_id: 1eJBGzyFe-oyX_ka ]"
三、解决问题
原因:url参数无效
我向微信服务器发送请求的url为
let url="https://api.weixin.qq.com/sns/jscode2session?appid=${appId}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code";
我用“{appId}”的形式获取参数,运行之后报错,参数无效。我估计是"${***}"获取参数失败。
修改url
将请求url改为
let url="https://api.weixin.qq.com/sns/jscode2session?appid="+appId+"&secret="+appSecret+"&js_code="+code+"&grant_type=authorization_code";
使用拼接字符串的形式传参,成功获取openId
data: '{
"session_key":"*******************==",
"openid":"*************************"
}'