最近在弄小程序,阅读了微信官方文档,上面说可以在后台获取用户的openid和unionid这些敏感信息,当然网上也有不少帖子,有的是在前台获取的,不过这里不太建议把这些敏感信息放在前台,毕竟不太安全。。。你懂得。如果你是一名Java工程师的话那么恭喜你,在接下来的官方文档中会让你气不打一出来,为啥?因为敏感信息放在了微信的加密字段里,官方的对称解密demo有php,node..。。。等。就是java,这里给大家分享一下,当然也借鉴了网上很多骨灰级大神的文章。
小程序代码如下:
// 登录
wx.login({
success: function (r) {
var code = r.code;//登录凭证
if (code) {
//2、调用获取用户信息接口
wx.getUserInfo({
success: function (res) {
console.log({ encryptedData: res.encryptedData, iv: res.iv, code: code })
//3.解密用户信息 获取unionId
//...
//3.请求自己的服务器,解密用户信息 获取unionId等加密信息
wx.request({
url: '',//自己的服务接口地址
method: 'post',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
data: { encryptedData: res.encryptedData, iv: res.iv, code: code },
success: function (data) {
//4.解密成功后 获取自己服务器返回的结果
if (data.data.status == 1) {
var userInfo_ = data.data.userInfo;
console.log(userInfo_)
} else {
console.log('解密失败')
}
},
fail: function () {
console.log('系统错误')
}
})
},
fail: function () {
console.log('获取用户信息失败')
}