微信小程序需要获取用户的 openid 来作为用户的唯一身份认证, 用来存储和更新对应客户信息. 以 Node 后台为例, 前台发出请求后, 后台转发访问对应的微信接口来获取 openid.
1. 小程序前端请求:
- getUserInfo: function(e) {
- App.globalData.userInfo = e.detail.userInfo
- this.setData({
- userInfo: e.detail.userInfo,
- hasUserInfo: true
- })
- wx.login({
- success: res => {
- App.globalData.usercode = res.code //1. 获取 usercode 作为后面获取 openid 的参数
- }
- })
- var id=null
- id=wx.getStorageSync('openid')
- if (!id)
- {
- wx.request({
- url: getOpenId, //set in config .JS //2. 后台 API
- method: "POST",
- data: {
- js_code: App.globalData.usercode,
- }, success(res) {
- var openId = res.data.openid
- var sessionKey = res.data.session_key
- console.log(res)
- wx.setStorageSync("openid", openId)
- App.globalData.openId = openId
- if (!!openId) { //3. 获取到 openid 后的处理, 可以依照自己的逻辑写
- App.globalData.openId = openId
- wxlogin(openId)
- }
- }
- })
- }
- }
- })
2. Node JS 后台获取 openid:
- router.post('/wxgetOpenId', function (req, res, next) {
- var data=req.body
- var APP_URL='https://api.weixin.qq.com/sns/jscode2session'
- var APP_ID='wxXXXXXXXXX' // 小程序的 App id , 在公众开发者后台可以看到
- var APP_SECRET='8ad6f0XXXXXXXXXXXX' // 程序的 App secrect, 在公众开发者后台可以看到
- var resData=null
- var thisRes=res
- if(!!data.js_code)
- {
- request(`${APP_URL}?appid=${APP_ID}&secret=${APP_SECRET}&js_code=${data.js_code}&grant_type=authorization_code`, (error, response, body)=>{
- console.log('statusCode:', response && response.statusCode)
- console.log(body)
- res.end(body)})
- }
- })
来源: http://www.bubuko.com/infodetail-3161521.html