两步实现微信小程序登录 获取openid和session_key

1.前端调用 wx.login() 获取临时登录凭证code,并回传到后台服务。

wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      wx.request({
        url: 'https://example.com/onLogin',
        data: {
          code: res.code
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})

2.后台拿到code调用auth.code2Session接口完成登录流程,可获取到openid、unionid、session_key

    public static JSONObject code2Session(String code) {
        // 发送http请求
        HttpRequest httpRequest = HttpUtil.createGet("https://api.weixin.qq.com/sns/jscode2session");
        httpRequest.form("appid", "wx6f525598409b1cd0");
        httpRequest.form("secret", "ab6e2190846612ef8ef1ccfd42dedcf9");
        httpRequest.form("js_code", code);
        httpRequest.form("grant_type", "authorization_code");
        HttpResponse execute = httpRequest.execute();
        String body = execute.body();
        execute.close();
        JSONObject jsonObject = JSONObject.parseObject(body);
        Integer errcode = jsonObject.getInteger("errcode");
        // -1:系统繁忙,此时请开发者稍候再试
        // 0:请求成功
        // 40029:code 无效
        // 45011:频率限制,每个用户每分钟100次
        if (errcode != 0) {
            throw new BusinessException(errcode, jsonObject.getString("errmsg"));
        }
        return jsonObject;
    }
    public static void main(String[] args) {
        JSONObject jsonObject = code2Session("xxx");
        // 用户唯一标识
        System.out.println(jsonObject.getString("openid"));
        // 会话密钥
        System.out.println(jsonObject.getString("session_key"));
        // 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回
        System.out.println(jsonObject.getString("unionid"));
        // 错误码
        System.out.println(jsonObject.getInteger("errcode"));
        // 错误信息
        System.out.println(jsonObject.getString("errmsg"));
    }

 

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值