java 微信小程序注册和登录 (精简demo)

复制代码
1. 前端通过 wx.login 接口获得临时登录凭证 code, 传给后台
复制代码
前端wx.login (API)

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
复制代码
复制代码
2. 后台调用jscode2session接口, 使用 code 换取 openid、unionid、session_key 等信息
复制代码
小程序登录 (服务端)

https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html
复制代码
3. 注册和登录实现代码
复制代码
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoginController {


    /**
     * 微信小程序注册和登录
     *
     * @param code  用户登录凭证(有效期五分钟)
     * @return
     */
    @RequestMapping("/login")
    public Object login(String code){

        if (StringUtils.isEmpty(code)) {
            return AjaxResult.error("登录凭证不能为空");
        }

        try {
            String appid = "AppID(小程序ID)";
            String secret = "AppSecret(小程序密钥)";
            String grant_type = "authorization_code";

            CloseableHttpClient httpClient = HttpClients.createDefault();
            // 小程序登录
            String url = "https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+secret+"&js_code="+code+"&grant_type="+grant_type;
            HttpGet get = new HttpGet(url);
            CloseableHttpResponse response = httpClient.execute(get);
            String result = EntityUtils.toString(response.getEntity(), "utf-8");
            JSONObject json = JSONObject.parseObject(result);
            if (!json.containsKey("errcode")) {
                String openid = json.getString("openid");
                String unionid = json.getString("unionid");

                // TODO 存数据库

                return "success";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "error";
    }
}
相关推荐
黄华SJ520it12 小时前
预约上门系统开发:懒人经济下的商业机遇与技术实践
小程序·系统开发
软件技术新观察15 小时前
2026年北京教育医疗小程序与APP定制开发:十大服务商实力测评
大数据·小程序
万岳科技程序员小金15 小时前
真人数字人小程序如何开发?AI数字人平台搭建流程全面解析
人工智能·小程序·ai数字人系统源码·ai数字人平台搭建·ai数字人小程序开发
didiplus1 天前
我在GitHub刷到一个诗词API,顺手写了款小程序
微信小程序
言乐61 天前
Python实现可运行解密游戏游戏框架
python·游戏·小程序·游戏程序·关卡设计
2501_915106322 天前
iOS 软件测试工具性能监控、日志分析 KeyMob、Instruments等
android·ios·小程序·https·uni-app·iphone·webview
云迈科技-软件定制开发2 天前
2026 AI智能体小程序APP开发怎么做:从场景规划到上线交付的完整参考
大数据·人工智能·小程序
小码哥0682 天前
医院陪诊小程序怎么开发-医院陪诊小程序源码功能-微信小程序 医院健康陪诊陪护系统
微信小程序·小程序·医院陪诊·陪诊系统·陪诊陪诊
书中枫叶2 天前
从「上次几点喂奶」到全栈小程序:我做了个喂宝助手
mongodb·微信小程序·node.js
黄华SJ520it2 天前
柯尔嫚商城模式开发:从概念到实现的完整指南
小程序·系统开发