微信小程序開發(fā)者服務器獲取用戶數據詳解
在微信小游戲/小程序開發(fā)中,開發(fā)者服務器需要獲取用戶數據,如用戶名、頭像、unionId等信息。官方文檔提供了小程序上傳encryptedData數據由服務器解密的方式。下面將介紹在Java環(huán)境下解密
在微信小游戲/小程序開發(fā)中,開發(fā)者服務器需要獲取用戶數據,如用戶名、頭像、unionId等信息。官方文檔提供了小程序上傳encryptedData數據由服務器解密的方式。下面將介紹在Java環(huán)境下解密的基本流程。
解密流程概述
1. 小程序通過前端接口獲取微信提供的開放數據,并上傳至開發(fā)者服務器。
2. 開發(fā)者后臺對接收到的數據進行校驗簽名和解密操作。
3. 用戶在小程序上使用wx.login登錄授權,獲得用戶登錄憑證code值。
4. 使用獲取用戶數據,將code、encryptedData、iv數據上傳至開發(fā)者服務器。
5. 通過接口獲取session_key。
6. 當涉及敏感數據時,接口返回的明文內容不包含這些數據。開發(fā)者需對加密數據進行對稱解密操作。
解密算法步驟
- 對稱解密采用AES-128-CBC算法,數據采用PKCS7填充。
- 目標密文為Base64_Decode(encryptedData)。
- 解密秘鑰aeskey Base64_Decode(session_key),aeskey長度為16字節(jié)。
- 初始向量為Base64_Decode(iv),iv由數據接口返回。
示例代碼與注意事項
- 微信官方提供了多種編程語言的示例代碼,調用方式一致。開發(fā)者可參考示例代碼進行實現。
- 為校驗數據有效性,在敏感數據上加上數據水印(watermark)。
- 解密代碼需要手動導入BouncyCastleProvider包。Maven依賴如下:
```xml
```
以上是關于在微信小程序開發(fā)中,開發(fā)者服務器獲取用戶數據并進行解密的詳細流程和注意事項。通過遵循官方文檔提供的指引和示例代碼,開發(fā)者可以成功實現數據解密操作,確保用戶數據的安全性和準確性。