目之瞬间-专注于互联网平台

微信小程序中获取用户的唯一标识openid,用于做业务判断处理

我是小程序加载时就调用,执行顺序如下:
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 });//意味着没有关联需要进行关联            }          }        });      }    });  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

后端访问代码

        public static String getOpenId(String wxId) {        String url = new StringBuilder("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, new HashMap<>());        JSONObject jsonObject = JSONObject.fromObject(body);        if (!jsonObject.containsKey("openid")) return null;        return jsonObject.getString("openid");    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15