小程序获取openid(用户标识)

120 阅读1分钟

流程:先通过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;
    }
}