Java对接微信登录
今天我们来对接微信开放平台的网站应用登录
首先上文档链接:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
文档上说的也很明白
首先我们需要注册一个开放平台的账号
但是吧很不爽的是需要企业认证花300RMB进行资质认证。
ok,我们先来创建一个网站应用
就是这样进行填写就行了
填写完,状态为通过就可以开始微信登录的开发了。
然后我们需要知道三个信息
ok,配置信息完成了
让我们继续来看微信开放平台的文档
第一步:请求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的!!!

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
链接参数根据微信开放平台配置对应填写



因为我这边redirect_uri填写的是一个接口,就需要写一个接口,我就直接上代码了,这里有封装的类和枚举,我就不展示了大家可以修改!!!
/**
* 请求 code web微信登录
*
* @param code 请求登录唯一 code
* @return 通用返回对象
*/
@ApiOperation("请求 code 微信登录")
@ApiImplicitParam(name = "code", value = "请求登录唯一code", dataType = "String", paramType = "query")
@GetMapping("/requestWeChatLogin")
public ApiResult requestWeChatLogin(@RequestParam("code") String code) {
// 断言为空则抛出异常
Assert.notNull(code, "未授权成功");
String appId = "xxxxxxxxx";
String secret = "xxxxxxxxxxxxxxxxxx";
String strUri = StrUtil.format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={}&secret={}&code={}&grant_type=authorization_code", appId, secret, code);
// 使用 Hutool开发工具包,执行请求接口,获取相关信息
HttpResponse response = HttpRequest.get(strUri).execute();
// 转成JSON对象
JSONObject jsonObject = JSONUtil.parseObj(response.body());
// 判断JSON对象中 unionid 是否存在
if (jsonObject.isNull("unionid")) {
// 不存在返回结果,code无效
return new ApiResult(CommonEnum.CODE_INVALID);
}
// 获取 unionId
String unionId = jsonObject.get("unionid").toString();
// 获取 openId
String openId = jsonObject.get("openid").toString();
// 获取 accessToken
String accessToken= jsonObject.get("access_token").toString();
return new ApiResult(CommonEnum.SUCCESS);
}
这样一顿操作后,就可以根据code获取到扫码授权用户的一些信息。
拿到这些信息可以使用 access_token&openid 来获取用户个人信息 等等。
该保存数据库可以保存,有别的操作自行编写!!!
Java对接微信登录的更多相关文章
- Java对接微信公众号模板消息推送
内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offi ...
- java对接微信支付
对接微信扫码支付(模式2),前端使用velocity技术 (1)调用微信支付接口(view层) 此部分业务逻辑部分可以省略 @RequestMapping("/wxpay.htm" ...
- java对接微信小程序
https://www.cnblogs.com/lyn20141231/p/11210372.html https://blog.csdn.net/sinat_29039125/article/det ...
- 对接微信红包时:CA证书出错,请登录微信支付商户平台下载证书
今天在对接微信支付的微信红包发放时,出现““CA证书出错,请登录微信支付商户平台下载证书”的错误,特此记录一下: 如果你也在对接微信红包,并且你也在这个页面上下载了demo,再就是你也参照了里面的文档 ...
- 如何从零开始对接第三方登录(Java版):QQ登录和微博登录
前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...
- Java 扫描微信公众号二维码,关注并自动登录网站
https://blog.csdn.net/qq_42851002/article/details/81327770 场景:用户扫描微信公众号的二维码,关注后自动登录网站,若已关注则直接登录. 逻辑: ...
- PHP对接微信扫码登录
1.PC端扫码登录 如果你将微信小程序和公众账号绑定同一个微信开放平台,那么他们各自的接口返回有一个参数unionid是相同的(没有绑定微信公众账号就没有):那么你就可以使用这个unionid来做业务 ...
- java实现微信小程序服务端(登录)
微信小程序如今被广泛使用,微信小程序按照微信官网的定义来说就是: 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 这就是微信小程序的魅力所在,有 ...
- 利用WxJava实现网站集成微信登录功能,核心代码竟然不超过10行
最近网站PC端集成微信扫码登录,踩了不少坑,在此记录下实现过程和注意事项. 本文目录 一.微信开放平台操作步骤1.创建“网站应用”2.获取AppID和AppSecret二.开发指南三.开发实战1.po ...
随机推荐
- zabbix数据库占用磁盘空间较大的处理方法
du -h /* |sort -nr 使用此命令一步步排查发现/var/lib/mysql/zabbix/这个目录占用磁盘空间较大 发现history_log.ibd这个文件最大,达到了38G,此文 ...
- 网络类(IP、dns、网络连接类)
一.centOS 7 设置DNS方法 使用全新的命令行工具 nmcli 来设置 1.显示当前网络连接 nmcli connection show NAME UUID TYPE DEVICE eno ...
- xianduanshu
https://www.cnblogs.com/xenny/p/9739600.html ***************https://blog.csdn.net/shiqi_614/article/ ...
- [USACO09DEC]视频游戏的麻烦Video Game Troubles(DP)
https://www.luogu.org/problem/P2967 https://ac.nowcoder.com/acm/contest/1077/B 题目描述 Farmer John's co ...
- CNN Mini-Fashion数据集以及Pytorch初体验
下载Fasion-MNIST数据集 Fashion-MNIST是一个替代原始的MNIST手写数字数据集的另一个图像数据集. 它是由Zalando(一家德国的时尚科技公司)旗下的研究部门提供.其涵盖了来 ...
- ArcGIS自定义坐标变换中的方法说明
在10.1里面,一共提供了12种转换的方法,如下: Ø Geocentric_Translation Ø Molodensky Ø Molodensky_Abridged Ø Position ...
- linux openjdk安装
sudo apt-get install openjdk-8-jdk 默认提示是 sudo apt-get install openjdk-8-jre, 这个只有jre https://openjdk ...
- java基础归纳
目录 1.java的8种基本数据类型: 2.java的三大特性 3.[public.private.protected区别]-访问权限 4.重载与重写区别 5.Throwable类.Error与Exc ...
- com.spotify:docker-maven-plugin 报localhost:2375 Connection refused 错误
当用maven build项目时出现了如下错误: Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (defaul ...
- Docker企业级镜像仓库harbor(vmware 中国团队)
第一步:安装docker和docker-compose 第二步:下载harbor-offline-installer-v1.3.0.tgz 第三步:上传到/opt,并解压 第四步:修改harbor.c ...
但是吧很不爽的是需要企业认证花300RMB进行资质认证。
ok,我们先来创建一个网站应用
就是这样进行填写就行了


第一步:请求code
这边请求需要带上相应的参数