Java实现微信公众号授权登录
Java微信公众号授权登录
1. 微信授权登录机制授权机制
微信移动设备授权登录是基于 OAuth2.0 协议标准构建的,从分类上来看,这种登陆方式满足 协议标准 的 第四种方式,即凭证式。
凭证式的认证方式
- 应用通过URL中携带 client_id 和 client_secret 来发出认证请求。
- 目标网站接收请求后两项验证通过后,直接返回令牌。
- 该令牌对应的是唯一应用,而不是唯一用户,所有整个应用的用户发送的请求都使用同一令牌。
2. 配置内网穿透
- 使用NATAPP网站配置隧道,获取本地电脑的临时域名。
- 详细配置教程NATAPP注册账号配置隧道
3. 微信公众号测试号配置
扫码登录 微信公众平台
获取个人的测试号信息,也就是对应我们上文提到的 client_id 和 client_secret
- 修改JS安全域名为内网穿透获得的临时域名
- (这里的接口网址不带http)
- 扫码关注自己的公众测试号,这样才能进行之后的扫码授权等操作
- 开启测试号网页授权功能并配置
(这里依然使用获得的临时域名)
4. 网页授权登录配置
查看[官方文档]( 微信开放文档 (qq.com) )
掌握了网页授权登录的基本步骤
1 第一步:用户同意授权,获取code
2 第二步:通过code换取网页授权access_token
3 第三步:刷新access_token(如果需要)
4 第四步:拉取用户信息(需scope为 snsapi_userinfo)
5 附:检验授权凭证(access_token)是否有效
代码实现
前台获取code
//截取code值getUrlParam(name) {var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')let url = window.location.href.split('#')[0]let search = url.split('?')[1]if (search) {var r = search.substr(0).match(reg)if (r !== null)return unescape(r[2])return null} elsereturn null},
发送含参的url请求
//判断信息是否传入if(code==null){return ResultJson.failure(ResultCode.ID_NOTFOUND);}String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + weiXinProperties.getAppid() +"&secret=" + weiXinProperties.getAppsecret() +"&code=" + code +"&grant_type=authorization_code";
获取 access_token
JSONObject jsonObject = HttpUtils.httpGet(url);String openId = jsonObject.getString("openid");String access_Token = jsonObject.getString("access_token");String accessToken = weiXinShareService.getAccessToken();
获取用户信息
// 拉取用户信息(需scope为 snsapi_userinfo)url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_Token +"&openid=" + openId +"&lang=zh_CN";JSONObject userInfoJson = HttpUtils.httpGet(url);log.info("拉取到的用户信息"+userInfoJson.toJSONString());if(String.valueOf(userInfoJson.get("errcode")).equals("40014")){return ResultJson.failure(ResultCode.NOT_ONLY_CODE);}
总体代码
@GetMapping("/getUserInfo")public ResultJson getUserInfo(String code,HttpServletResponse response) throws Exception {//判断信息是否传入if(code==null){return ResultJson.failure(ResultCode.ID_NOTFOUND);}String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + weiXinProperties.getAppid() +"&secret=" + weiXinProperties.getAppsecret() +"&code=" + code +"&grant_type=authorization_code";JSONObject jsonObject = HttpUtils.httpGet(url);String openId = jsonObject.getString("openid");String access_Token = jsonObject.getString("access_token");String accessToken = weiXinShareService.getAccessToken();// 拉取用户信息(需scope为 snsapi_userinfo)url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_Token +"&openid=" + openId +"&lang=zh_CN";JSONObject userInfoJson = HttpUtils.httpGet(url);log.info("拉取到的用户信息"+userInfoJson.toJSONString());if(String.valueOf(userInfoJson.get("errcode")).equals("40014")){return ResultJson.failure(ResultCode.NOT_ONLY_CODE);}if(userInfoJson!=null){//业务操作判断}
Java实现微信公众号授权登录相关推荐
- java实现微信公众号授权登录获取用户信息(一)
参考文章:https://blog.csdn.net/Santiago_M/article/details/79109154 : https://www.cnblogs.com/jilu/p/6123 ...
- Java在Web端微信公众号授权登录
Java在Web端微信公众号授权登录 1.需要在微信开发平台配置 url:是自己服务中的微信需要推给你的地址(需要使用二级域名,可以去添加链接描述)购买9块钱1个月使用权或者白嫖都可 token 这个 ...
- 【SpringBoot学习】46、SpringBoot 集成 Uniapp 实现微信公众号授权登录
文章目录 一.公众号环境搭建 二.Spring Boot 集成微信公众号 1.application.yml 微信配置 2.控制层接口 三.Uniapp 实现授权登录 一.公众号环境搭建 本篇文章使用 ...
- 基于Spring Boo微信公众号授权登录获取用户信息(附带完整源码)
简介 微信公众号开发中,必不少可少的一环:公众号授权登录.获取微信用户信息. 本地完整运行环境准备 内网渗透=>生成本地指定端口映射的外网域名 传送门:内网渗透工具Natapp使用详解 域名生成 ...
- 微信公众号授权登录(asp.net + angular)
微信是时下最火的,上面有数以亿计的用户,如果能接入微信将大大减低注册门槛,当然,接入微信登录是有门槛的.微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继 ...
- vue移动端项目微信公众号授权登录
前言 在我们做移动端项目时, 很多功能是以登录后才能进行后续的操作, 并且许多pc端的网页都有微信扫码登录功能, 为了做到pc与移动端统一, 往往移动端项目需要添加微信登录功能, 那么为什么手机端不能 ...
- H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)
实现微信公众号授权登录,很简单,但是注意的地方要细心,小伙伴们跟着我的思路一起实现吧! 文章目录 一.帐号申请 1. 正式账号 2. 测试帐号 二.微信文档 2.1. 文档主页 2.2. 授权流程 2 ...
- uni-app 对FastAdmin微信公众号授权登录实例
uni-app 对FastAdmin微信公众号授权登录实例 uniapp 微信公众号授权登录代码 跳转获取code 提交fastadmin 第三方登录插件 进行登录验证 存储token onLoad( ...
- RuoYi-App移动版(uni-app)微信公众号授权登录
前言 略 uni-app 未提供微信公众号授权登录 uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆.三方登录(微信.微博.QQ.Apple.go ...
- Spring boot 项目(十三)——实现微信公众号授权登录获取用户信息
引言 微信公众号开发中,必不可少的一环:公众号授权登录.获取微信用户信息 前期准备 内网渗透=>生成本地指定端口映射的外网域名 链接:内网渗透工具natapp使用详解 域名生成之后修改yml文件 ...
最新文章
- django mysql 时区_django 中的时区设置
- 页面怎么把关键字保留下来_怎么做seo优化,以及网站SEO优化计划!
- Qt Creator设置Qbs
- debian文本配置网络备忘:/etc/network/interfaces
- “菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)
- 转换流指定编码读写文件
- 二叉树的构造及其前序,中序,后序遍历
- Mapx自带的工具的理解
- HDOJ 1114 Piggy-Bank 【动态规划 完全背包】
- 【OpenCV学习笔记】【类型转换】一(IplImage和cv::Mat的类型相互转换)
- 《Python硬件编程实战》——1.3 Python的特点
- 【通信原理 入坑之路】基于MATLAB的移动通信系统仿真 之 瑞利衰落信道的原理与仿真
- python怎么实现模块化_python模块化编程与简单模块实现
- C语言面试题汇总(持续更)
- 空洞骑士 Mac版 支持M1
- android雪花飘落动画,Android自定义View——从零开始实现雪花飘落效果
- Combo Box Control
- 本周XR新闻:吴德周成立AR硬件公司,SideQuest支持PICO、Magic Leap
- android avb2.0问题解答 汇总
- eclipse 调整html编辑器