流程:先通过wx.login拿到登录凭证code,再调服务端小程序登录接口获取openid
一.获取用户登录凭证
1.接口介绍(点击标题可跳转至官方文档)
wx.login(Object object)
描述:调用接口获取登录凭证(code)
2.代码实现
//1.获取登录code
const loginRes = await new Promise((resolve, reject) => {
uni.login({
success: resolve,
fail: reject
});
});
console.log('微信登录code:', loginRes.code);
二.调用服务端小程序登录接口
1.接口介绍(点击标题可跳转至官方文档)
url地址:api.weixin.qq.com/sns/jscode2…
描述:登录凭证校验。
请求参数:
appid 小程序 appId,secret 小程序 appSecret
js_code 登录时获取的 code,grant_type 授权类型,只需填写 authorization_code
2.代码实现
public class WechatUtil {
// 配置自己的app_id、app_secret
// 配置自己的app_id、app_secret
private static final String APP_ID = "xxx";
private static final String APP_SECRET = "xxx";
public static String getOpenId(String loginCode) {
String url = "https://api.weixin.qq.com/sns/jscode2session";
String requestUrl = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("appid", APP_ID)
.queryParam("secret", APP_SECRET)
.queryParam("js_code", loginCode)
.queryParam("grant_type", "authorization_code")
.toUriString();
HttpResponse response = HttpUtil.createGet(requestUrl).execute();
// 获取 session_key 和 openid
JSONObject parseObj = JSONUtil.parseObj(response.body());
WechatParam wechatParam = new WechatParam();
String openid = (String) parseObj.get("openid");
return openid;
}
}