微信小程序的openId是用户在该小程序上的唯一标识
获取方式如下:
wx.login({
success: res => {
// 获取到用户的 code 之后:res.code
console.log("用户的code:" + res.code);
// 可以传给后台,再经过解析获取用户的 openid
// 或者可以直接使用微信的提供的接口直接获取 openid ,方法如下:
// wx.request({
// 自行补上自己的 APPID 和 SECRET
// url: 'https://api.weixin.qq.com/sns/jscode2session?appid=XXXXXXXXXXXXXXX&secret=XXXXXXXXX&js_code=' + res.code + '&grant_type=authorization_code',
// success: res => {
// 获取到用户的 openid
// console.log("用户的openid:" + res.data.openid);
// app.globalData.openid= res.data.openid;
// }
// });
wx.request({
url: 自己的后端代码的地址
data: {
code: res.code
},
header: { 'content-type': 'application/x-www-form-urlencoded' },
method: 'POST',
success: (result) => {
console.log(result)
},
fail: () => {},
complete: () => {}
});
}
});
本人后端语言使用的是java代码:
/**
* 微信openId获取工具类
* @author Cocowwy
* @create 2020-12-12-22:18
*/
public class WxOpenIdUtil {
public static String getOpenId(String code) {
String appid = "XXXXXXX";
String secret = "XXXXXXXXXXXXXX";
//appid和secret是开发者分别是小程序ID和小程序密钥,开发者通过微信公众平台-》设置-》开发设置就可以直接获取,
String url = "https://api.weixin.qq.com/sns/jscode2session?appid="
+ appid + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code";
BufferedReader in = null;
try {
URL weChatUrl = new URL(url);
// 打开和URL之间的连接
URLConnection connection = weChatUrl.openConnection();
// 设置通用的请求属性
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// 建立实际的连接
connection.connect();
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
该返回的字符串是json格式, 之后通过工具类解析即可!