今天我们来对接微信开放平台的网站应用登录

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;

2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;

3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

文档上说的也很明白

首先我们需要注册一个开放平台的账号

java微信企业号 java对接企业微信_微信

但是吧很不爽的是需要企业认证花300RMB进行资质认证。

----------------------------------------------------------

ok,我们先来创建一个网站应用

java微信企业号 java对接企业微信_微信开放平台_02

java微信企业号 java对接企业微信_json_03

根据提示进行填写就行了

填写完,状态为已通过就可以开始微信登录的开发了。

首先我们需要知道三个信息

java微信企业号 java对接企业微信_如何登陆java版的微信_04

java微信企业号 java对接企业微信_java微信企业号_05

,方可继续开发。

再让我们继续来看微信开放平台的文档

java微信企业号 java对接企业微信_java微信企业号_06

注意是否必须!!!

redirect_uri是回调地址uri刚才配置的授权回调域填上并加上接口 or html,这个可以根据自己的业务来,这里我是填上接口


上面信息是我随便填写的,开发时请根据自己的微信开放平台配置填写

ok,完成后打开此链接就会进入到该页面,就可以开始登录了。

使用手机端微信扫描,

java微信企业号 java对接企业微信_微信_07

注意:每次每个用户授权后都会得到一个一次性的code,这个code只能使用一次 ,下次再授权登录会重新生成code的!!!

java微信企业号 java对接企业微信_json_08

java微信企业号 java对接企业微信_微信_09

java微信企业号 java对接企业微信_json_10

java微信企业号 java对接企业微信_微信开放平台_11

因为我这边redirect_uri填写的是一个接口,就需要写一个接口,我就直接上代码了,这里有封装的类和枚举,我就不展示了大家可以修改!!!

1 /**

2 * 请求 code web微信登录3 *4 *@paramcode 请求登录唯一 code5 *@return通用返回对象6 */

7 @ApiOperation("请求 code 微信登录")8 @ApiImplicitParam(name = "code", value = "请求登录唯一code", dataType = "String", paramType = "query")9 @GetMapping("/requestWeChatLogin")10 public ApiResult requestWeChatLogin(@RequestParam("code") String code) {11 //断言为空则抛出异常

12 Assert.notNull(code, "未授权成功");13 String appId = "xxxxxxxxx";14 String secret = "xxxxxxxxxxxxxxxxxx";15 String strUri = StrUtil.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code", appId, secret, code);16 //使用 Hutool开发工具包,执行请求接口,获取相关信息

17 HttpResponse response =HttpRequest.get(strUri).execute();18 //转成JSON对象

19 JSONObject jsonObject =JSONUtil.parseObj(response.body());20 //判断JSON对象中 unionid 是否存在

21 if (jsonObject.isNull("unionid")) {22 //不存在返回结果,code无效

23 return newApiResult(CommonEnum.CODE_INVALID);24 }25 //获取 unionId

26 String unionId = jsonObject.get("unionid").toString();27 //获取 openId

28 String openId = jsonObject.get("openid").toString();29 //获取 accessToken

30 String accessToken= jsonObject.get("access_token").toString();31 return newApiResult(CommonEnum.SUCCESS);32 }

这样一顿操作后,就可以根据code获取到扫码授权用户的一些信息。

拿到这些信息可以使用 access_token&openid 来获取用户个人信息 等等。