Java微信公众号授权登录

1. 微信授权登录机制授权机制

  • 微信移动设备授权登录是基于 OAuth2.0 协议标准构建的,从分类上来看,这种登陆方式满足 协议标准 的 第四种方式,即凭证式。

  • 凭证式的认证方式

    • 应用通过URL中携带 client_id 和 client_secret 来发出认证请求。
    • 目标网站接收请求后两项验证通过后,直接返回令牌。
    • 该令牌对应的是唯一应用,而不是唯一用户,所有整个应用的用户发送的请求都使用同一令牌。

2. 配置内网穿透

  1. 使用NATAPP网站配置隧道,获取本地电脑的临时域名。
  2. 详细配置教程NATAPP注册账号配置隧道

3. 微信公众号测试号配置

  1. 扫码登录 微信公众平台

  2. 获取个人的测试号信息,也就是对应我们上文提到的 client_id 和 client_secret

  1. 修改JS安全域名为内网穿透获得的临时域名

  • (这里的接口网址不带http)
  1. 扫码关注自己的公众测试号,这样才能进行之后的扫码授权等操作

  1. 开启测试号网页授权功能并配置


(这里依然使用获得的临时域名)

4. 网页授权登录配置

  1. 查看[官方文档]( 微信开放文档 (qq.com) )

  2. 掌握了网页授权登录的基本步骤

    1 第一步:用户同意授权,获取code

    2 第二步:通过code换取网页授权access_token

    3 第三步:刷新access_token(如果需要)

    4 第四步:拉取用户信息(需scope为 snsapi_userinfo)

    5 附:检验授权凭证(access_token)是否有效

  3. 代码实现

    1. 前台获取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},
      
    2. 发送含参的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";
    3. 获取 access_token

       JSONObject jsonObject = HttpUtils.httpGet(url);String openId = jsonObject.getString("openid");String access_Token = jsonObject.getString("access_token");String accessToken = weiXinShareService.getAccessToken();
      
    4. 获取用户信息

          // 拉取用户信息(需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);}
      
    5. 总体代码

          @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实现微信公众号授权登录相关推荐

  1. java实现微信公众号授权登录获取用户信息(一)

    参考文章:https://blog.csdn.net/Santiago_M/article/details/79109154 : https://www.cnblogs.com/jilu/p/6123 ...

  2. Java在Web端微信公众号授权登录

    Java在Web端微信公众号授权登录 1.需要在微信开发平台配置 url:是自己服务中的微信需要推给你的地址(需要使用二级域名,可以去添加链接描述)购买9块钱1个月使用权或者白嫖都可 token 这个 ...

  3. 【SpringBoot学习】46、SpringBoot 集成 Uniapp 实现微信公众号授权登录

    文章目录 一.公众号环境搭建 二.Spring Boot 集成微信公众号 1.application.yml 微信配置 2.控制层接口 三.Uniapp 实现授权登录 一.公众号环境搭建 本篇文章使用 ...

  4. 基于Spring Boo微信公众号授权登录获取用户信息(附带完整源码)

    简介 微信公众号开发中,必不少可少的一环:公众号授权登录.获取微信用户信息. 本地完整运行环境准备 内网渗透=>生成本地指定端口映射的外网域名 传送门:内网渗透工具Natapp使用详解 域名生成 ...

  5. 微信公众号授权登录(asp.net + angular)

    微信是时下最火的,上面有数以亿计的用户,如果能接入微信将大大减低注册门槛,当然,接入微信登录是有门槛的.微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继 ...

  6. vue移动端项目微信公众号授权登录

    前言 在我们做移动端项目时, 很多功能是以登录后才能进行后续的操作, 并且许多pc端的网页都有微信扫码登录功能, 为了做到pc与移动端统一, 往往移动端项目需要添加微信登录功能, 那么为什么手机端不能 ...

  7. H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)

    实现微信公众号授权登录,很简单,但是注意的地方要细心,小伙伴们跟着我的思路一起实现吧! 文章目录 一.帐号申请 1. 正式账号 2. 测试帐号 二.微信文档 2.1. 文档主页 2.2. 授权流程 2 ...

  8. uni-app 对FastAdmin微信公众号授权登录实例

    uni-app 对FastAdmin微信公众号授权登录实例 uniapp 微信公众号授权登录代码 跳转获取code 提交fastadmin 第三方登录插件 进行登录验证 存储token onLoad( ...

  9. RuoYi-App移动版(uni-app)微信公众号授权登录

    前言 略 uni-app 未提供微信公众号授权登录 uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆.三方登录(微信.微博.QQ.Apple.go ...

  10. Spring boot 项目(十三)——实现微信公众号授权登录获取用户信息

    引言 微信公众号开发中,必不可少的一环:公众号授权登录.获取微信用户信息 前期准备 内网渗透=>生成本地指定端口映射的外网域名 链接:内网渗透工具natapp使用详解 域名生成之后修改yml文件 ...

最新文章

  1. django mysql 时区_django 中的时区设置
  2. 页面怎么把关键字保留下来_怎么做seo优化,以及网站SEO优化计划!
  3. Qt Creator设置Qbs
  4. debian文本配置网络备忘:/etc/network/interfaces
  5. “菜”鸟理解.NET Framework(CLI,CLS,CTS,CLR,FCL,BCL)
  6. 转换流指定编码读写文件
  7. 二叉树的构造及其前序,中序,后序遍历
  8. Mapx自带的工具的理解
  9. HDOJ 1114 Piggy-Bank 【动态规划 完全背包】
  10. 【OpenCV学习笔记】【类型转换】一(IplImage和cv::Mat的类型相互转换)
  11. 《Python硬件编程实战》——1.3 Python的特点
  12. 【通信原理 入坑之路】基于MATLAB的移动通信系统仿真 之 瑞利衰落信道的原理与仿真
  13. python怎么实现模块化_python模块化编程与简单模块实现
  14. C语言面试题汇总(持续更)
  15. 空洞骑士 Mac版 支持M1
  16. android雪花飘落动画,Android自定义View——从零开始实现雪花飘落效果
  17. Combo Box Control
  18. 本周XR新闻:吴德周成立AR硬件公司,SideQuest支持PICO、Magic Leap
  19. android avb2.0问题解答 汇总
  20. eclipse 调整html编辑器

热门文章

  1. 一、数据挖掘—初识数据挖掘
  2. python-expected an indented block问题解决
  3. OpenKG祝大家端午安康
  4. 抓取手机端app日志的方法总结
  5. Mac删除自带输入法
  6. linux 查看go安装目录,Linux系统安装Go语言的步骤
  7. 哔哩哔哩没有html5播放,解决哔哩哔哩网页版视频空白不能播放的方法
  8. 使用 K3S 创建本地开发集群
  9. 笔记本电脑win10打开照相机显示灰色相机解决办法
  10. SQL注入中information_schema的作用