微信网页授权步骤:


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

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

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

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

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

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

scope参数中的snsapi_base(静默授权,用户无感知)和snsapi_userinfo(非静默授权,提示框需要用户确认授权)


https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect​

如果是前后端分离,该链接后端拼接好返回给前端,有前端进行访问,redirect_uri对应的回调地址,是前端服务器的地址,并且微信公众号回调地址不带http://,本地调试需要开内网穿透(花生壳),不然微信回调请求不到,链接上带的域名和微信公众号配置的回调地址域名保持一致。

二.前端请求上面的地址后获取code,然后请求后端callBack接口进行授权

@Transactional
@Override
public Map<String, Object> callBack(string code) {String outh2_url = WechatConstants.OUTH2_URL + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";Map<String, Object> params = new HashMap<>();//发送请求 get提交 拿code凭证去获取openid和access_tokenString s = HttpClientUtils.doGet(outh2_url, params);if (StringUtils.isEmpty(s) || s.contains("errcode")) {log.info(s);throw new ServiceException(ExceptionEnum.AUTHORIZATION_FAILED);}JSONObject jsonObject = JSONObject.parseObject(s);log.info("发送请求 get提交 拿code凭证去获取openid和access_token:{}", jsonObject.toJSONString());String openid = jsonObject.getString("openid");String access_token = jsonObject.getString("access_token");//获取用户接口String userinfo_url = WechatConstants.USERINFO_URL + access_token + "&openid=" + openid + "&lang=zh_CN";String result = HttpClientUtils.doGet(userinfo_url, params);if (StringUtils.isEmpty(result) || result.contains("errcode")) {log.info(result);throw new ServiceException(ExceptionEnum.WEI_XIN_USER_INFO);}JSONObject userInfo = JSONObject.parseObject(result);log.info("获取用户接口:{}", userInfo.toJSONString());//通过openId和companyCode查询数据库是否有过授权WeiXinAccount weiXinAccount = weiXinAccountMapper.selectOneByCondition(new WeiXinAccount().setCompanyCode(req.getCompanyCode()).setOpenId(openid));//保存用户微信相关信息(头像,微信id,微信名等)Date date = new Date();WeiXinAccount weiXinUserInfo = new WeiXinAccount().setCity(userInfo.getString("city")).setNickName(userInfo.getString("nickname")).setHeadImageUrl(userInfo.getString("headimgurl")).setSex(userInfo.getInteger("sex")).setUpdateTime(date);if (null == weiXinAccount) {weiXinUserInfo.setCompanyCode(req.getCompanyCode()).setOpenId(openid).setCreateTime(date);weiXinAccountMapper.insert(weiXinUserInfo);} else {weiXinUserInfo.setId(weiXinAccount.getId());weiXinAccountMapper.updateByPrimaryKeySelective(weiXinUserInfo);}Map<String, Object> resultMap = new HashMap<>(2);resultMap.put("openId", openid);//标记是否已经绑定已有的账号resultMap.put("binding", Boolean.FALSE);if (null != weiXinAccount && null != weiXinAccount.getCustomerId()) {resultMap.put("binding", Boolean.TRUE);}return resultMap;
}

静态参数类

public class WechatConstants {public static final String CONNECT_OUTH2_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=";public static final String OUTH2_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=";public static final String USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=";public static final String OAUTH2_SCOPE_USER_INFO = "snsapi_userinfo";
}

springboot整合微信网页授权登陆相关推荐

  1. python实现网页微信登陆_django 微信网页授权登陆的实现

    一.准备工作 0x00 开发前准备 服务号!!! 微信认证. 备案过的域名. 服务器. 0x01 手动触发dns更新 0x02 配置业务域名 0x03 将服务器请求转发到本地 修改服务器的 /etc/ ...

  2. SpringBoot 实现 微信网页授权登录

    SpringBoot简单搭建若是不会,可以看我另一篇文章:https://blog.csdn.net/wang_jing_jing/article/details/115075991 SppringB ...

  3. django 微信网页授权登陆实战

    ? Author: 廖长江 ? Link: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 ⏱ Publis ...

  4. 网页授权前端 java_H5微信网页授权java后端SpringBoot实现

    本文使用weixin4j工具包,实现SpringBoot中微信网页授权功能,并获取用户信息. 使用weixin4j工具包1.0.0版本,官网 https://developers.weixin.qq. ...

  5. java微信端html_H5微信网页授权java后端SpringBoot实现

    转载请注明出处即可,感谢!本文地址:https://www.cnblogs.com/qupengblog/p/14105369.html 本文使用weixin4j工具包,实现SpringBoot中微信 ...

  6. .NET WebAPI 微信网页授权的实现(一)前端篇

    写在前面 微信网页授权登陆是微信网页开发的第一步,由于框架限制需要使用.NET WebAPI的前后端分离模式进行开发,所以经过几天的摸索,写了这个简单的微信网页授权的实现Demo,本篇文章为微信公众号 ...

  7. Springboot + Spring Security多种登录方式:账号用户名登录+微信网页授权登录

    一.概述 实现账号用户名+微信网页授权登录集成在Spring Security的思路,最重要的一点是要实现微信登录通过Spring Security安全框架时,不需要验证账号.密码. 二.准备工作 要 ...

  8. SpringBoot + Spring Security多种登录方式:账号+微信网页授权登录

    一.概述 实现账号用户名+微信网页授权登录集成在Spring Security的思路,最重要的一点是要实现微信登录通过Spring Security安全框架时,不需要验证账号.密码. 二.准备工作 要 ...

  9. 微信OAuth2网页授权登陆接口

    微信OAuth2网页授权登陆接口,微信OAuth2网页授权登陆接口,在你的网站上放上可以扫码登陆,会不会吸引更多用户去注册,现在你只需要简单的配制一下就可以轻松实现,还不快点拿走,微信扫码登陆接口开发 ...

  10. 真-小白详解-Springboot微信网页授权!!!

    个人也是一个小白,记录自己开发微信网页授权的过程,其中有什么不足,欢迎各位指点!!! 开发前提: (1)Springboot的开发环境 (2)导入github的微信SDK <dependency ...

最新文章

  1. Attach Volume 操作(Part II) - 每天5分钟玩转 OpenStack(54)
  2. RHCE课程-RH131Linux管理笔记八-安装和管理XEN虚拟机
  3. 美团技术四面经历,作者已拿到Offer!
  4. Platform Builder 6.0与Windows 7兼容性的问题
  5. localStorage.setItem()前后端分离情况下使用
  6. python机器人算法_DBscan算法及其Python实现
  7. IOS开发-UIView之动画效果的实现方法(合集)
  8. [转载]Qlist的用法
  9. C#正则表达式小结 - z
  10. 2022最全毕设题目选题
  11. 微信小程序的点击、双击、长按事件
  12. 相机镜头选择:相机焦距、视场角和景深(可视距离)之间的关系
  13. Hive环境搭建--轻量级安装so easy!
  14. 有趣的灵魂不多,但有趣的设计素材这里很多
  15. 伯克利 计算机 音乐,加州大学伯克利分校音乐专业有哪些?
  16. 【云原生 | 从零开始学Kubernetes】二十七、配置管理中心Secret和rbac授权
  17. 【06月04日】A股滚动市盈率PE历史新低排名
  18. 信息组织 | 信息组织中的自然语言应用
  19. 2017-2018年度总结--梅花香自苦寒来
  20. 十分钟快速了解《你不知道的 JavaScript》(上卷) 1

热门文章

  1. c#在线考试系统参考文献(精选100个)
  2. 对话仟峰资本Steven:DeFi大赢家是怎样炼成的 |链捕手
  3. 离散数学自反,对称,传递闭包
  4. 【技术指标】MACD详解
  5. Surface设备完美安装Linux/Archlinux双系统教程
  6. 唱响艾泽拉斯_搞笑篇
  7. 传:九大前缀,三大后缀
  8. 联想服务器硬盘启动设置方法,教你联想台式机bios设定硬盘启动方法
  9. 机器学习入门算法及其java实现-EM(Expectation Maxium)算法
  10. python打包时出现RecursionError: maximum recursion depth exceeded的解决方法