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="wx7e96fc051d505d38";//微信appID
     public final static  String appSecret ="b6709177544ee8bd1cefc5466f9e6a66";//微信appSecret

    public final static  String REDIRECT_URI ="http://g6iq85.natappfree.cc"; //url地址
}

2.HttpClientUtil工具类
这里已经编写好,具体使用请查看HttpClientUti类。
3.Controller层代码。

  @ApiOperation("验证")
    @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我们就可以判断,返回消息是不是微信所返回的。
用户同意授权之后,会执行如下的代码。

 @ApiOperation("用户同意授权")
    @RequestMapping(value = "/invoke",produces="application/json; charset=utf-8")
    public void 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
       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";
                     System.out.println(HttpClientUtil.doGet(path2));
}

path参数介绍
在这里插入图片描述
path2参数介绍
在这里插入图片描述
返回值参数介绍,这里的返回值是字符串,如需要可通过JSONObject类,转成json;
在这里插入图片描述
致此整个微信授权获取用户信息到此结束。

猜你喜欢

转载自blog.csdn.net/zhangzhenkeai/article/details/109295496