第17课 微信小程序通过node获取用户openid:
- 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器。
- 调用 auth.code2Session 接口,换取用户唯一标识 OpenID 和 会话密钥 session_key。
流程图如下:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html
auth.code2Session 接口如下:
https://developers.weixin.qq.com/miniprogram/dev/api-backend/auth.code2Session.html
1.首先我们在微信小程序需要获取用户openid的页面js文件做如下配置:
wx.login({ //先调用 wx.login() 获取 临时登录凭证code
success: res =>{
const code = res.code //获取到用户临时登录凭证code
wx.request({ //发送请求
url: "http://localhost:8000/login?code="+code, //携带code
success: (res) =>{ //返回node请求到的OpenID与session_key
const openid = res.data.openid
wx.setStorageSync("openid", openid)
}
})
},
fail: console.log
})
2.node.js配置的js文件:
const express = require('express');
const request = require('request')
const app = express()
app.listen(8000) //这里监听8000端口
const appid = "wx123123123" //开发者的appid
const appsecret = "123123123123" //开发者的appsecret 登入小程序公共平台内查看
app.use('/login', (req,res)=>{
const code = req.query.code //拿到传过来的code
//调用 auth.code2Session接口,换取用户唯一标识 OpenID 和 会话密钥 session_key
const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${appsecret}&js_code=${code}&grant_type=authorization_code`
request(url, (err,res,body)=>{
res.send(body) //将请求到的 OpenID与 session_key 返回给小程序页面js文件
})
})