微信小程序获取openid的两种方式
这篇文章是关于获取openid的两种方式,自己在学着用微信小程序来写一个小东西玩
首先我们要到小程序官网获取到自己的appid和Appsecret 如图
第一种:直接在微信小程序中获取,不需要通过后台
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
const code = res.code;
// 设置appid
const appId = "。。。。。";
// const appid = res.appid;
//设置secret
const secret = "。。。。。";
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId
+ '&secret=' + secret
+ '&js_code=' + code
+ '&grant_type=authorization_code',
data: {},
header: {
'content-type': 'json'
},
success: function (res) {
const openId = res.data.openid; //返回openid
}
})
}
})
第一种就这样了
第二种:通过后台发送来获取openid
微信小程序传code过去
public class WeiXinGetOpenid { @Value("${wx.app.secret}") private String secret; @Value("${wx.app.appid}") private String appid; private String grant_type = "authorization_code"; /** * 获取openid * @param code 微信小程序前台发送code * @return */ public Map getOpenid(String code) { Map resultMap = new HashMap(); try { //拼接接口需要的参数 String params = "appid=" + appid + "&secret=" + secret + "&js_code=" + code + "&grant_type" + grant_type; //小程序获取openid的APi String url = "https://api.weixin.qq.com/sns/jscode2session"; String s = HttpUtil.sendPost(url, params); JSONObject object = JSON.parseObject(s); System.out.println("返回结果====="+object); resultMap.put("data", object.get("openid")); resultMap.put("code","200"); resultMap.put("msg","success"); } catch (Exception e) { resultMap.put("code","201"); resultMap.put("msg","fail"); } return resultMap; } }
第二种主要看返回的object的数据,有可能报错,我这里没有处理,
像这种的 {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: XhNBdzXBe-es50oa ]"}
应该是code有问题。
自己太菜了,如果看不懂的话就去找大佬写的看看。