博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MMJ-Spring Boot(Java)获取小程序Openid
阅读量:6198 次
发布时间:2019-06-21

本文共 4104 字,大约阅读时间需要 13 分钟。

背景

开发小程序,想使用微信账号唯一码,API是这么说的

wx.login...
code 换取 session_key
接口地址:

问题

开放的api并且是get,直接浏览器地址正确传参就可以获取到openid。

但是
小程序要求,请求的域名必须配置合法,而微信的api接口域名不让配置
MMJ-Spring Boot(Java)获取小程序Openid

解决办法

只能后台服务编写请求,小程序访问自己的服务端,服务端返回openid即可

具体步骤

使用Apache HttpClient实现请求第三方api接口

提供这么几个通用类,直接拷贝后调用

//如果有code,说明是微信小程序,根据code获取openId        //classify用于标识使用哪个小程序的授权码        String openid = "{ErrorMsg:\"获取失败.\"}";        if (!CheckUtil.checkNulls(jscode,classify)){            //            openid = OpenIdUtil.oauth2GetOpenid(jscode,classify);        }        return openid;

1、请求参数组装OpenIdUtil

package com.wondersgroup.xa.healthyCard.user;/** * @author xsx */public class OpenIdUtil {    public static String oauth2GetOpenid(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;    }}

结束

以上工具类,拷贝到自己的服务,调用就可以正常使用了

我是沫沫金,我得朋友经常找我开发软件,你也可以,百度沫沫金和我取得联系

本文转自 沫沫金 51CTO博客,原文链接:http://blog.51cto.com/zl0828/2046339,如需转载请自行联系原作者

你可能感兴趣的文章
Linux之软件包类故障排错
查看>>
Android调用WebService系列之封装能力
查看>>
Hadoop 2.5.1学习笔记8: 完整的程序模板
查看>>
Jmeter压力测试(简单的http请求)-实例
查看>>
JVM CMS和G1 有什么区别
查看>>
获取随机数的几种方法
查看>>
Linux test 详细使用介绍
查看>>
Python 多线程 threading
查看>>
4.6.5 参数名
查看>>
Swoole入门指南:PHP7安装Swoole详细教程
查看>>
linux kill用法、killall、pkill、xkill
查看>>
e+创业:炒散App搵银更快趣
查看>>
MySQL锁表
查看>>
MySQL ON DUPLICATE KEY UPDATE 傻瓜应用教程
查看>>
CISCO设备 命名编号的含义
查看>>
Linux 网络问题故障排查
查看>>
自定义Android侧滑菜单控件
查看>>
struts 文件上传 《摘录》
查看>>
Linux磁盘管理命令
查看>>
Android 应用的 apk 包名和签名一致和不一致时对软件升级有什么样的影响?
查看>>