折騰到半夜,搞得挺興奮,總結一下,免得忘了:
1、微信小程序直接獲得的是一些簡單信息,基本無用
2、用戶唯一標識是openid,還有一個unionid是關聯多個公眾號之類情況下用,我不大關心
3、在getUserInfo的返回數據中,有加密信息,
wx.getUserInfo({
success: function(res) {
}
})
res包括userInfo,iv,rawData,signature,encryptedData,這些東西的關系比較復雜,我理解是這樣的:
1)userInfo包括簡單的用戶信息
2)重要信息在encryptedData中,解開后包括:
3)要解開的話,需要密文-encryptedData,向量-iv,密鑰-session-key。密鑰這里沒有。
4)rawData,signature是來做校驗的,不太關心
4、session-key的獲取方式:
1)登錄成功后,傳給回調的參數包括一個code,但這個code會很快失效
2)通過調用
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
可以獲得session-key和openid。除了code,其他參數很簡單,文檔里有說明。
在瀏覽器中測試沒有問題,但是,在小程序中也不能運行,因為小程序只能訪問認證過的服務器。換言之,必須要把這個東西放到服務器上,從微信中去調用服務器的頁面,服務器的頁面再去訪問這個接口,然后再把數據反饋回來。
道理搞明白其實就很簡單了,獲得了openid,其實也沒用必要再去解密了,因為那里除了openid,也沒啥想要的東西。
我的小程序:簡單賬本
參考:
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject
http://bbs.umeng.com/thread-6081-1-1.html