前言:这是当下微信小程序获取手机号码新标准的实现方法。几年前的实现方式已经不能使用了,同样吐槽一下,小程序开发限制越来越大,同样功能代码也越写越多。行业规范更标准,开发人员更心累。
view页面
<u-button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" text="获取手机号" color="#74dfb5"></u-button>
js方法
getPhoneNumber(e) {
uni.login({
provider: 'weixin',
success: res1 => {
// 调用后端接口获取session_key
getSessionKey({ code: res1.code }).then(res2 => {
let pc = new WXBizDataCrypt('微信小程序的appid', res2.session_key);
let data = pc.decryptData(e.detail.encryptedData, e.detail.iv);
// data.phoneNumber 就是手机号
})
}
})
}
备注:js方法里使用一个引入外部js包的方法(微信官方提供的包),vue当前页面引入依赖的地方补上这行代码,将包放到项目根目录common文件夹下。下载地址:https://download.csdn.net/download/qq_31481585/88646185
import WXBizDataCrypt "@/common/WXBizDataCrypt.js"
java接口
@ApiOperation("小程序获取当前用户的session_key和openid,魏")
@PostMapping("/getSessionKey")
public AjaxResult getSessionKey(@RequestBody Map<String, Object> limit) {
String appid="";
String secret="";
String urlName = "https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+secret+"&js_code=" + MapUtils.getString(limit, "code") + "&grant_type=authorization_code";
Map<String, Object> first = first(urlName);
String session_key = MapUtils.getString(first, "session_key");
String openid1 = MapUtils.getString(first, "openid");
AjaxResult ajax = AjaxResult.success();
ajax.put("session_key", session_key);
ajax.put("openid", openid1);
return ajax;
}