java微信小程序获取openid

该博客介绍了如何在后端实现微信小程序的登录功能,通过前端wx.login获取的code,结合appid和appSecret调用微信官方API获取用户的openID。示例代码展示了使用Java进行接口调用的过程,并提供了相关配置常量。
摘要由CSDN通过智能技术生成

微信官方文档

小程序登录 | 微信开放文档 (qq.com)

直接复制即可使用

根据前端wx.login获取到的code传到后端 

/**
     *新版小程序登录获取openID
     * @param code
     * @return
     */
    @SaIgnore
    @PostMapping("/gotWxAuth")
    public JSONObject gotWxAuth(String code) {

        if (StrUtil.isBlank(code)) {
            return null;
        }
        Map<String, Object> requestUrlParam = new HashMap<String, Object>();
        requestUrlParam.put("appid", WXConfig.appid);    //开发者设置中的appId
        requestUrlParam.put("secret", WXConfig.secret);    //开发者设置中的appSecret
        requestUrlParam.put("js_code", code);    //小程序调用wx.login返回的code
        requestUrlParam.put("grant_type", "authorization_code");//默认参数
        String resultWx = HttpRequest.post(WX_URL)
            .form(requestUrlParam)//表单内容
            .timeout(20000)//超时,毫秒
            .execute().body();
        return JSONUtil.parseObj(resultWx);
    }
/**
 * 微信小程序相关配置
 * @Description: TODO
 * @Author Leo
 * @Date 2022/12/12
 * @Version V1.0
 **/
public class WXConfig {
    public static final String appid = "wxf806*********0bd";
    public static final String secret = "722b**********************7bd6b";
}
//微信官方获取微信用户唯一标识的openID的接口
private final String WX_URL = "https://api.weixin.qq.com/sns/jscode2session";

前端调完接口返回的结果

apifox接口调用测试

 

 

 

 

Spring Boot项目中集成微信小程序获取用户OpenID通常涉及到微信小程序的OAuth授权流程。以下是简单的步骤: 1. **注册并配置**: 首先,在微信公众平台上注册小程序,并在"开发者中心" -> "设置" -> "服务器配置"中,配置好AppID和AppSecret。 2. **添加依赖**: 添加Spring Cloud Alipay或者微信SDK的依赖到你的项目中,比如`spring-boot-starter-wechat`。 3. **配置服务端授权URL**: 在配置文件中配置微信的授权地址和redirect_uri,这是小程序回调的地址。 4. **引导用户授权**: 在前端页面,通过微信提供的API跳转到授权页面,让用户体验授权过程。 5. **处理授权结果**: 用户授权后,微信会将code作为参数回调到指定的redirect_uri。你需要在后端解析这个code,然后通过微信提供的API换取access_token和openid。 6. **保存openid**: 用得到的openid关联用户的账号信息,通常会持久化存储在数据库中。 ```java // 示例代码(仅供参考) String code = request.getParameter("code"); WXApi wxApi = new WXApi(); Map<String, String> params = new HashMap<>(); params.put("appid", wechatConfig.getAppId()); params.put("secret", wechatConfig.getSecret()); params.put("code", code); params.put("grant_type", "authorization_code"); WXAuthResponse authResp = wxApi.fetchAuthCode(params); if (authResp.isSucc()) { // 使用access_token换取openid Map<String, String> accessTokenParams = new HashMap<>(); accessTokenParams.put("appid", wechatConfig.getAppId()); accessTokenParams.put("secret", wechatConfig.getSecret()); accessTokenParams.put("code", code); accessTokenParams.put("grant_type", "authorization_code"); // ...进一步获取access_token和openid... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值