微信小程序获取用户openid(附前后端源码) 您所在的位置:网站首页 云开发获取用户openid 微信小程序获取用户openid(附前后端源码)

微信小程序获取用户openid(附前后端源码)

2024-07-14 01:15| 来源: 网络整理| 查看: 265

前言

在开发微信小程序的时候,获取用户openid是再常见不过的事情了,openid是用户在指定小程序X小程序中的固定身份id,每个用户在该X小程序的都不一样,每个用户在不同的小程序的身份id也不一样,那么怎样才能获取用户的openid呢?

获取openid过程:

获取openid首先需要调用小程序的login方法获取小程序的登录凭证code,然后使用code向微信换取登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等,这个方法是获取不到用户头像、昵称等隐私信息的,隐私信息需要用户授权,并且使用的也是其他的方法。

下面讲一个简单的获取用户openid案例。

前端代码如代码清单1所示:

代码清单1

代码语言:javascript复制getOpenid: function() { var that = this; wx.login({ success(res) { if (res.code) { //发起网络请求 wx.request({ url: 'http://localhost:8091/wxapi/decryptCode', data: { code: res.code }, success(data){ wx.showToast({ title: '获取openid成功', icon: 'success', duration: 2000 }) console.log("openid:" + data.data) that.setData({ userOpenid:data.data }) },fail(data){ wx.showToast({ title: '获取openid失败', icon: 'fail', duration: 2000 }) } }) } else { console.log('登录失败!' + res.errMsg) } } }) }

从代码清单1可以看到,这段代码就是一个获取用户openid的getOpenid方法,当这个方法被调用后,首先调用小程序的开放接口wx.login获取code,然后将code发送到后台,如果后台成功返回openid则提示获取openid成功并打印到控制台并显示在页面上,反之提示获取openid失败。

后端代码如代码清单2所示:

代码清单2

代码语言:javascript复制 @ResponseBody @RequestMapping(value = "/wxapi/decryptCode", produces = "application/json;",method = RequestMethod.POST) public String decodeOpenid(HttpServletResponse response, String code){ response.setHeader("Access-Control-Allow-Origin", "*"); response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("utf-8"); String wxspAppid = "填写小程序appid"; String wxspSecret = "填写小程序密钥"; try { Map map = new HashMap(); // 授权(必填) String grant_type = "authorization_code"; // 请求参数 String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grant_type; log.info("解析code请求参数:"+params.toString()); // 发送请求 String sr = HttpRequest.sendPost("https://api.weixin.qq.com/sns/jscode2session", params); // 解析相应内容(转换成json对象) JSONObject json = JSONObject.parseObject(sr); log.info("解析code请求结果:"+json.toString()); // 获取会话密钥(session_key) String session_key = json.getString("session_key"); String openid = json.getString("openid"); log.info("openid:"+openid); return RespResult.resp400("openId生成失败"); } catch (Exception e) { e.printStackTrace(); return RespResult.resp500(e); } }

从代码清单2可以看到,后台获取code后,会将小程序appid和secret等信息进行拼接,然后向微信发送post请求获取用户openid等登录态信息,之后再返回openid给前端。

运行截图如图1-1所示:

图1-1 代码运行截图

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html(小程序官方文档)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有