下面是官网的提示信息链接:
https://developers.weixin.qq.com/community/minihome/doc/000806202400280b0edd5866156c01?blockType=99&pass_ticket=evb7v4LC5Bza6jlRLzxsRqlC824r61rZJfB%2F9ae0PyrgbDgWUHRY1HRH%2FZ%2B65aKH
问题复现:现在是session_key暴漏在返回的参数中
修改后,从后端返回的参数如下;只有手机号码和appid,已经把session_key去掉了
原来获取session_key的方法
getPhoneNumber(e) {if (e.detail.errMsg == "getPhoneNumber:ok") { //点击了“允许”按钮,//获取用户openidwx.request({//这里的this.data.loginCode 是从wx.login中获取的url: 'https://localhost:8080/getweixinweixin/getOpenId?code=' + this.data.loginCode,method: 'POST',success: res => {//解密获取手机号,从后端获取的openidthis.data.openId = res.data.openid//从后端获取的session_keythis.data.sessionKey = res.data.session_key//根据session_key加密var pc = new WXBizDataCrypt(this.data.appId, res.data.session_key)//解密var phoneData = pc.decryptData(e.detail.encryptedData, e.detail.iv)if (phoneData != null && phoneData != '') {wx.setStorageSync('phone', phoneData.phoneNumber)this.setData({phone: phoneData.phoneNumber})}}})
上面的code(this.data.loginCode,)是从下面的方法中获取的
//登录wx.login({success: res => {this.data.loginCode = res.code}})
现在获取appid和phone的方法,不获取session_key的方法
wx.login这个方法也可以删除了
getPhoneNumber(e) {if (e.detail.errMsg == "getPhoneNumber:ok") { //点击了“允许”按钮,//获取用户openidwx.request({url: 'http://localhost:8080/getweixin/getOpenId?code=' + e.detail.code, method: 'POST',success: res => {wx.setStorageSync('phone', res.data.phoneNumber)this.setData({phone: res.data.phoneNumber})
后台调用新接口的方法,可以参考,
第一步:先调用token的接口,获取token
第二步:用获取的token信息和code,调用第二个接口,获取手机号码和appid
接口地址:
//获取token的接口,APPID和APPSECRET需要申请
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
//获取手机号码和aiipId接口,需要传入token和code
https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=
后台Java代码调用示例;可以直接用的那种
/***小程序获取手机号码和appid*/@PostMapping("/getOpenId")public Map getOpenId(@RequestParam(value = "code", required = false) String code) {String accessTokenUrl = WeixinConstants.accessTokenUrl.replace("APPID", appId).replace("APPSECRET", appSecret);String response_token = HttpRequest.get(accessTokenUrl).timeout(60000).execute().body();JSONObject token = JSON.parseObject(response_token);// 获取tokenString url = WeixinConstants.new_openIdUrl + token.getString("access_token");//Map paramMap = new HashMap<>();paramMap.put("code", code);HttpHeaders headers = new HttpHeaders();HttpEntity
需要在pom.xml中引入下面的jar包
cn.hutool hutool-all 5.7.7
暂时梳理这些:有问题欢迎留言交流
上一篇:Figma UI UX设计教程