我是小程序加载时就调用,执行顺序如下:
1、进入小程序时会调用onLoad,onLoad函数是监听页面加载的;
2、在onLoad引用wx.login,获取一个临时访问code,当前code有效时间为5分钟,并且只能使用一次;
3、将code传入后端,在后端访问https://api.weixin.qq.com/sns/jscode2session?appid=APP_ID&secret=SECRET&js_code=code&grant_type=authorization_code链接,获取openId并且关联用户;
/**
* 生命周期函数--监听页面加载
*/onLoad:function(options){var tempThis =this;
wx.login({success:function(res){
wx.request({
url:'https://127.0.0.1/student/getStudentJointInfo',//接口地址
data:{ wxId: res.code },//res.code就是当前调用wx.login生成的,有效时间5分钟success:function(d){if(d.data ==null|| d.data ==""){
tempThis.setData({ hiddenmodalput:false, wxId: res.code });//意味着没有关联需要进行关联
console.log(d.data);}else{
tempThis.setData({ phoneNum: d.data, wxId: res.code });//意味着没有关联需要进行关联}}});}});},
后端访问代码
/**
* 获取微信用户唯一标识ID
*
* @param wxId 也就是wx.login生成的code,有效时间五分钟,只能使用一次
* @return 验证成功则返回openid,失败则为null
*/publicstaticStringgetOpenId(String wxId){String url =newStringBuilder("https://api.weixin.qq.com/sns/jscode2session?appid=").append(APP_ID).append("&secret=").append(SECRET).append("&js_code=").append(wxId).append("&grant_type=authorization_code").toString();String body =OkHttpClientUtil.getBody(url,8L,newHashMap<>());JSONObject jsonObject =JSONObject.fromObject(body);if(!jsonObject.containsKey("openid"))returnnull;return jsonObject.getString("openid");}
版权归原作者 Acmen-zym 所有, 如有侵权,请联系我们删除。