MMJ-Spring Boot(Java)获取小程序Openid
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,背景开发小程序,想使用微信账号唯一码,API是这么说的wx.login...code 换取 session_key接口地址:https://api.weixin.qq.com/sns/jscode2s
千家信息网最后更新 2025年01月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安全错误
数据库的锁怎样保障安全
网络安全投标模板
网络安全预警的分级主要考虑
软件开发w7安装什么版
帝国神话自定义服务器常用指令
wamp数据库密码修改
信息化和网络安全试题
网络安全六防内容是什么
网络技术岗工作职责
国内的交友软件开发
广东综合软件开发批发价格
网络安全观内涵
复杂业务 软件开发
二进制数据库设计
阿里小号数据库号码
西湖论剑网络安全责任
锡山区专注软件开发应用销售公司
邮件发到对方服务器啥意思
楚雄专业java软件开发
计算机网络技术包括
r430服务器怎么设置启动
银行软件开发中心怎么面试
宿豫区自动化网络技术厂家价格
工行软件开发中心杭州薪水
40岁的网络技术人员
网络安全 暴恐音视频
公共安全信息化与网络安全
火影忍者手游1417服务器
一般网络安全防护设备
国际网络安全组织有什么
如何设置计算机服务器的入站规则