前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java对接微信登录

Java对接微信登录

作者头像
用户7353950
发布2022-05-10 18:58:59
6.4K2
发布2022-05-10 18:58:59
举报
文章被收录于专栏:IT技术订阅

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

首先上文档链接:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

代码语言:javascript
复制

1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
代码语言:javascript
复制
文档上说的也很明白
代码语言:javascript
复制
首先我们需要注册一个开放平台的账号

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

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

就是这样进行填写就行了

代码语言:javascript
复制
填写完,状态为通过就可以开始微信登录的开发了。

然后我们需要知道三个信息

代码语言:javascript
复制
ok,配置信息完成了
代码语言:javascript
复制
让我们继续来看微信开放平台的文档
代码语言:javascript
复制
第一步:请求code
这边请求需要带上相应的参数

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

这个urlEnCode处理,网上有很多在线工具:https://tool.chinaz.com/tools/urlencode.aspx

然后根据微信开发文档填写对应的信息

https://open.weixin.qq.com/connect/qrconnect?

appid=xxxxxxxxx&redirect_uri=https%3a%2f%2fwww.baidu.com%2frequestWechatLogin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect

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

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

使用手机端微信扫描,

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

代码语言:javascript
复制
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

链接参数根据微信开放平台配置对应填写

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

代码语言:javascript
复制
 1 /**
 2      * 请求 code web微信登录
 3      *
 4      * @param code 请求登录唯一 code
 5      * @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 new ApiResult(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 new ApiResult(CommonEnum.SUCCESS);
32     }

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

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

该保存数据库可以保存,有别的操作自行编写!!!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术订阅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档