微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html
openId : 用户在当前小程序的唯一标识
因为最近根据API调用https://api.weixin.qq.com/sns/jscode2session所以需要配置以下服务,但是官方是不赞成这种做法的,
而且最近把在服务器配置的方法给关闭了。也就是说要获取用户openid,地区等信息只能在后台获取。
一下是官方的流程
那么问题来了,代码怎么实现呢,以下是用java后台的实现
微信客户端的代码实现是这样的
[html] view plain copy
wx.login({
success: function (r) {
if (r.code) {
var code = r.code;//登录凭证
if (code) {
//2、调用获取用户信息接口
wx.getUserInfo({
success: function (res) {
//发起网络请求
wx.request({
url: that.data.net + '/decodeUser.json',
header: {
"content-type": "application/x-www-form-urlencoded"
},
method: "POST",
data: {
encryptedData: res.encryptedData,
iv: res.iv,
code: code
},
success: function (result) {
// wx.setStorage({
// key: 'openid',
// data: res.data.openid,
// })
console.log(result)
}
})
},
fail: function () {
console.log('获取用户信息失败')
}
})
} else {
console.log('获取用户登录态失败!' + r.errMsg)
}
} else {
}
}
})
(服务端 java)自己的服务器发送code到微信服务器获取openid(用户唯一标识)和session_key(会话密钥),
最后将encryptedData、iv、session_key通过AES解密获取到用户敏感数据
1、获取秘钥并处理解密的controller
[java] view plain copy
/**
* 解密用户敏感数据
*
* @param encryptedData 明文,加密数据
* @param iv 加密算法的初始向量