目录
- 一、前言
- 二、微信开放平台绑定小程序
- 三、微信小程序login和getUserInfo
- 四、后台请求auth.code2Session
- 五、后台解密开放数据
一、前言
微信小程序开发笔记——导读
二、微信开放平台绑定小程序
微信官方文档:UnionID 机制说明
- 我们目前有一个微信开放平台,两个微信小程序,一个自己的后台服务器,没有公众号。
- 所以先登录微信开放平台 — 管理中心 — 小程序 — 绑定小程序,
- 然后走第一条途径调用接口 wx.getUserInfo,从解密数据中获取 UnionID。
- 具体的方法如下。
三、微信小程序login和getUserInfo
- 调用之前,记得要获取到用户授权
wx.login({success: function(res) {if (res.code) {var code = res.codewx.getUserInfo({success: function(res) {//发起网络请求wx.request({url: 'https://yourHostName.com/login',data: {code: code,rawData: res.rawData,signature: res.signature,iv: res.iv},success: function(res) {console.log("login success", res)}})}})} else {console.log('登录失败!' + res.errMsg)}}})
四、后台请求auth.code2Session
微信官方文档:auth.code2Session
- 如果我们有公众号,那么到这一步就结束了,直接可以拿到unionid
- 但是我们没有,那就只能拿session_key和wx.getUserInfo获取的加密数据,进行进一步的解密得到unionid
五、后台解密开放数据
微信官方文档:服务端获取开放数据
- 其中微信官网给了四个语言的示例代码
- 以Node.js为例,看到代码还是相对简单的,将encryptedData解密成开放数据,其中就包含我们需要的unionid
var WXBizDataCrypt = require('./WXBizDataCrypt')var appId = 'wx4f4bc4dec97d474b'
var sessionKey = 'tiihtNczf5v6AKRyjwEUhQ=='
var encryptedData = 'CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM'+'QmRzooG2xrDcvSnxIMXFufNstNGTyaGS'+'9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+'+'3hVbJSRgv+4lGOETKUQz6OYStslQ142d'+'NCuabNPGBzlooOmB231qMM85d2/fV6Ch'+'evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6'+'/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw'+'u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn'+'/Hz7saL8xz+W//FRAUid1OksQaQx4CMs'+'8LOddcQhULW4ucetDf96JcR3g0gfRK4P'+'C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB'+'6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns'+'/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd'+'lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV'+'oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG'+'20f0a04COwfneQAGGwd5oa+T8yO5hzuy'+'Db/XcxxmK01EpqOyuxINew=='
var iv = 'r7BXXKkLb8qrSNn05n0qiA=='var pc = new WXBizDataCrypt(appId, sessionKey)var data = pc.decryptData(encryptedData , iv)console.log('解密后 data: ', data)
// 解密后的数据为
//
// data = {
// "nickName": "Band",
// "gender": 1,
// "language": "zh_CN",
// "city": "Guangzhou",
// "province": "Guangdong",
// "country": "CN",
// "avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/aSKcBBPpibyKNicHNTMM0qJVh8Kjgiak2AHWr8MHM4WgMEm7GFhsf8OYrySdbvAMvTsw3mo8ibKicsnfN5pRjl1p8HQ/0",
// "unionId": "ocMvos6NjeKLIBqg5Mr9QjxrP1FA",
// "watermark": {
// "timestamp": 1477314187,
// "appid": "wx4f4bc4dec97d474b"
// }
// }