java Web获取微信授权用户信息

java Web获取微信授权用户信息

1.申请微信公众测试号

首先需要去微信开发公众平台申请一个微信公众平台测试号,页面如下。
在这里插入图片描述
登陆之后,页面如下。
在这里插入图片描述
页面下拉会看到这个,微信扫码关注即可。
在这里插入图片描述

接口信息无需配置。页面往下拉会看到如下的页面。
在这里插入图片描述
点击网页账号后面的修改需要填写url地址,注意url地址不能携带http:// 和https://,正确填下格式如下。
在这里插入图片描述

如若没有URL地址可通过下面的方法获取。

2.获取URL地址

.获取URL地址,首先打开内网穿透注册网站,注册步骤省略。注册之后查看使用文档,我们需要购买一个免费的web隧道。
在这里插入图片描述
之后点击配置。在这里插入图片描述
只需要配置本地端口号,其余无需配置,例如后端端口号8000,在这里填写8000即可。根据不同的系统选择对应的客户端下载
在这里插入图片描述
下载之后如图在这里插入图片描述
运行方式参考文档,这里以windows系统为例。运行后的界面是这样的。在这里插入图片描述
此时我们需要输入命令行,

cmd -authtoken=

之后在输入如下的命令行

natapp -authtoken=9ab6b9040a624f40

这里的authtoken值需要在这里获取
在这里插入图片描述
正确输入命令后会出现下面的图。黄色网格里就是我们需要的url地址。

在这里插入图片描述
得到url地址,这时我们就可以在微信公众号平台开发里配置。

3.后台代码

1.此时配置好之后我们需要编写Java代码,首先需要一个配置实体类。

public class Oautch {
        public final static  String appID="wx0d8b22ce0d371acf";//微信appID
        public final static  String appSecret ="86a97a207d75ec521164b1e913ce7d85";//微信appSecret
        public final static  String REDIRECT_URI ="http://8bsbit.natappfree.cc"; //url地址
    }

2.HttpClientUtil工具类
这里已经编写好,具体使用请查看HttpClientUti类。
使用 JSONObject工具类需要引入下面的maven坐标

         <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.4</version>
        </dependency>

3.Controller层代码。

   //验证
    @RequestMapping("/oautch")
    public void token(HttpServletResponse httpServletResponse) throws Exception {
        String path= Oautch.REDIRECT_URI+"/api/common/invoke";//这里拼接你的URL地址,用户授权同意之后会调用的接口方法。
        path= URLEncoder.encode(path,"UTF-8");
        String url="https://open.weixin.qq.com/connect/oauth2/authorize?" +
                "appid="+Oautch.appID+
                "&redirect_uri="+path+
                "&response_type=code&" +
                "scope=snsapi_userinfo&" +
                "state=wechat_redirect";
        httpServletResponse.sendRedirect(url);
    }

参数介绍
在这里插入图片描述
当用户同意授权后我们会得到一个code值,其中state是我们传入的参数值,当用户同意后,也会把state的值传入过来,通过这个state我们就可以判断,返回消息是不是微信所返回的。
用户同意授权之后,会执行如下的代码。

  //用户同意执行回调
    @RequestMapping(value = "/invoke",produces="application/json; charset=utf-8")
    public String token1(String code, String state) throws IOException {
        /*
         * 得到code值,获取用户的openid获取token
         * */
        String path="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+Oautch.appID+"&secret="+Oautch.appSecret+"&code="+code+"&grant_type=authorization_code";
        JSONObject jsonObject = new JSONObject(HttpClientUtil.doGet(path));
        String access_token = (String) jsonObject.get("access_token");//得到token
        System.out.println(access_token);
        String openid = (String) jsonObject.get("openid");//得到openid
        //根据code值和oppenid获取用户的基本信息
        String path2="https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openid+"&lang=zh_CN";
        String s = HttpClientUtil.doGet(path2);
        System.out.println(s);
        return s;
    }

path参数介绍
在这里插入图片描述
path2参数介绍
在这里插入图片描述
返回值参数介绍,这里的返回值是字符串,如需要可通过JSONObject类,转成json;
在这里插入图片描述
4.测试
(1)只需要我们用手机微信打开url地址就可以获取用户信息了。URL地址就是1+2的拼接, 这里就是 http://8bsbit.natappfree.cc/api/common/oautch
在这里插入图片描述
在这里插入图片描述
(2)微信打开后页面如下
在这里插入图片描述
同意后可以看到自己的信息,控制台打印如下
在这里插入图片描述
至此整个微信授权获取用户信息到此结束,代码已上传到GitHup,https://github.com/1049083230/weixin


版权声明:本文为zhangzhenkeai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。