場景:拿到用戶openid粹舵,創(chuàng)建session,用戶信息傳輸加密
1.wx.login() 成功返回的數(shù)據(jù)中獲取code骂倘,encryptedData眼滤,iv
2.調(diào)用自己的服務器,將這些參數(shù)傳過去历涝,然后由服務器調(diào)用微信提供的api诅需,加上小程序的appid,secret
https://api.weixin.qq.com/sns/jscode2session?appid="+APPID+"&secret="+SECRET+"&grant_type=authorization_code&js_code="+code;
這樣就可以獲取到session_key及用戶的openid
3.使用微信提供的nodejsWXBizDataCrypt這個庫
var pc = new WXBizDataCrypt(APPID, sessionKey);
var data = pc.decryptData(encryptedData,iv);
這樣就可以解密出用戶的信息啦
至于session,也問下了做服務端的同事荧库,他們說是用的J2EE堰塌,然后他們說他們都有特別的處理這些東西
然后我找到了koa-session-store,koa-session-mongo
把它集成到服務端里面分衫,結(jié)合了mongoDB進行session存儲
最后就把session作為基礎參數(shù)场刑,當發(fā)起網(wǎng)絡請求的時候帶上這個參數(shù)供服務端校驗
對于一整個流程,官方也給出詳細的說明
有個地方有點困惑的是蚪战,微信給了個接口 wx.checkSession(OBJECT)牵现,這個應該小程序內(nèi)部的session,但是沒有提供API設置有效期什么的邀桑,不知道是不是待完善