MMJ-Spring Boot(Java)获取小程序Openid
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,背景开发小程序,想使用微信账号唯一码,API是这么说的wx.login...code 换取 session_key接口地址:https://api.weixin.qq.com/sns/jscode2s
千家信息网最后更新 2026年10月31日MMJ-Spring Boot(Java)获取小程序Openid
背景
开发小程序,想使用微信账号唯一码,API是这么说的
wx.login...
code 换取 session_key
接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
问题
开放的api并且是get,直接浏览器地址正确传参就可以获取到openid。
但是
小程序要求,请求的域名必须配置合法,而微信的api接口域名不让配置
解决办法
只能后台服务编写请求,小程序访问自己的服务端,服务端返回openid即可
具体步骤
使用Apache HttpClient实现请求第三方api接口
提供这么几个通用类,直接拷贝后调用
//如果有code,说明是微信小程序,根据code获取openId //classify用于标识使用哪个小程序的授权码 String openid = "{ErrorMsg:\"获取失败.\"}"; if (!CheckUtil.checkNulls(jscode,classify)){ // openid = OpenIdUtil.oauth3GetOpenid(jscode,classify); } return openid;1、请求参数组装OpenIdUtil
package com.wondersgroup.xa.healthyCard.user;/** * @author xsx */public class OpenIdUtil { public static String oauth3GetOpenid(String code,String classify) { String appid=""; String appsecret=""; switch (classify){ case "jiankangka": //自己的配置appid appid = "********"; //自己的配置APPSECRET; appsecret = "*********"; break; } //授权(必填) String grant_type = "authorization_code"; //URL String requestUrl = "https://api.weixin.qq.com/sns/jscode2session"; //请求参数 String params = "appid=" + appid + "&secret=" + appsecret + "&js_code=" + code + "&grant_type=" + grant_type; //发送请求 String data = HttpUtil.get(requestUrl, params); return data; }}2、HttpClient请求工具类HttpUtil
package com.wondersgroup.xa.healthyCard.user;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;/** * @author xsx */public class HttpUtil { /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return String 所代表远程资源的响应结果 */ @SuppressWarnings("unused") public static String get(String url,String param){ String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; //System.out.println(urlNameString); URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map> map = connection.getHeaderFields(); // 遍历所有的响应头字段 /*for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); }*/ // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; }} 3、程序健壮性验证通用类CheckUtil
package com.wondersgroup.xa.healthyCard.user;import org.apache.commons.lang.StringUtils;public class CheckUtil { /** * 验证是否有空值的参数,只要有一个,就返回true * * @param args * @return true */ public static boolean checkNulls(String... args) { if (args.length == 0) { return true; } // for (String str : args) { if (StringUtils.isEmpty(str)) { return true; } } return false; }}结束
以上工具类,拷贝到自己的服务,调用就可以正常使用了
我是沫沫金,我得朋友经常找我开发软件,你也可以,百度沫沫金和我取得联系
程序
参数
服务
配置
接口
地址
域名
字段
工具
拷贝
开发
输入
验证
健壮
合法
之间
代表
办法
后台
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
互联网黑科技
互联网和科技技术
国智互联网科技
互联网为科技
互联网金融 金融科技
互联网科技公司怎么样
互联网与新科技
云电互联网科技
互联网 视角下的科技创新
科技类的互联网平台
互联网巨头投资的硬核科技
互联网之后的科技是什么
哈尔滨新华互联网科技学院
广东工业互联网大赛深圳学泰科技
工业互联网科技创业
北京军民互联网科技公司
东风日产互联网科技公司叫什么
网互联网络科技
如何强化互联网金融科技
互联网与科技发展
猪兼强互联网科技
上海挚品互联网科技
滨湖区互联网智能科技产品供应
河南猎农互联网科技有限公司
深圳市优智互联网科技有限公司
伊宁互联网科技做什么的
互联网领先科技宣传片
广西科技产业互联网是什么
互联网公司属于科技吗