根据 wx.login 返回的 code 请求到 session_key
和 wx.getUserInfo 返回的 encryptedData 和 iv 进行解密运算之后
openssl_decrypt 返回了 null
请求内容
{
"code":-5,
"exception":{
"wx_response_data":{
"session_key":"59zDUzb7x6/g1bX80fpvYw==",
"openid":"oL61M5ck5nx5Qy_utiprs-ctP5Hs"
},
"wx_code":"033WNvnZ0VET102msJlZ0VfInZ0WNvnc",
"raw":{
"encryptData":"3+1Fs839g3x8TP25KtIoIB1EhyEhx6iGufHdzx6ocxLbxgbbApzsnEVP5eTsVItdMUkdz9PVXJVPTGqf3x6RgLZfZM1jKfgMO6h0PJg7/103ZfwIJbyJosmGtO32lpxu6JwlglYNz+LB+oUHeyYZVWeDIeZlzgcAnDwseuu0wnGnqyKmCxxqKJj2FFZsyLBHvjNsrHEnVM+3sMX1UGatrkpdfcAHg5KvxwV7lXK6H4gMyy6a6vKq7hR8310Rk1AnFCMKDrJkcxTj4fXRXXwp2TZrWQi2WCWBSacqfDWsiCBpLn4oh/CzQDRJa4vNuGCpQz7XKbV3nS/Op4DxWenX453HUKkZBXbdJMMzylKXgR3OnyLv70O06FvKtNH9pRUWOgex7TYhHYSuNhvyrbWOy4TDl9ew4tev5/NAdq/wbYSScfFRCb9v9PO89L/OkTkJCVPMSEStHs1N33RuMmom0UkIaP7cP5QvgMycD9/akSo=",
"iv":"cs6YpTkzdu+EbLoGOOCxVQ=="
}
}
}
解密函数是这样的
public function WXDecrypt($encryptKey, $iv, $encryptStr) {
$decryptData = \openssl_decrypt(
base64_decode($encryptStr),
'AES-128-CBC',
base64_decode($encryptKey),
OPENSSL_RAW_DATA,
base64_decode($iv)
);
return json_decode($decryptData, true);
}
小程序端代码
https://gist.github.com/Caringor/7fdf75db64819bdcef9dab6360e7dada.js
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.