文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源。

一、微信公众号授权步骤

首先到微信公众平台注册账号,可以看到有四种类型(服务号,订阅号,小程序,企业微信),用到服务号,而且还需要认证,但注册服务号需要公司的资质,我是注册了一个订阅号(为了后续申请测试号)。 不同的公众号有不同级别的公众号接口权限,详情可以参见微信官公众平台方文档. 从上面文档里可以看到未认证的订阅号没有用户管理-网页授权获取用户openid/用户基本信息这一项的权限

所以我们需要到这里申请一个测试号,接口测试号申请

申请测试号后进入测试好管理界面。里面有测试号信息(appID,appSectet)、体验接口权限表等信息。

然后到微信网页授权文档,有对微信网页授权过程的详细描述,这页文档非常重要(仔细查看,很多问题都是文档没有看清楚)

我们用的是测试号,需要再到测试号管理界面修改网页授权域名,如下图。

然后就是微信网页授权的四个步骤,在这里有非常清楚地描述。这些步骤都是手工方式获取opendid,下面介绍如何使用SDK的方式获取。

我们这里用的是wixin-java-tools这个开源的SDK。

我们首先要到SDK文档的MP_Quick Start部分,查看如何配置WxMpInMemoryConfigStorageWxMpService
然后到文档的MP_OAuth2网页授权部分,找到如何去获取WxMpOAuth2AccessToken,这个对象对微信的返回数据作了封装,其中就包含opendi字段。

以上就是获取openid的两种方式,获取openid是我们下一步微信支付的基础。

二、springboot整合微信授权开发

看了上面的文档和sdk后,我们应该知道大概的开发流程,如何整合到springboot呢,可能还是有点不太了解,接下来我们看看。

1.1构造网页授权url(官方文档)

首先构造网页授权url,然后构成超链接让用户点击:

WxMpService wxMpService = ...;
String url = ...;
wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null)

1.2整合到springboot

@GetMapping("/authorize")public String authorize(@RequestParam("returnUrl") String returnUrl){//1. 配置//2.调用方法String url="http://localhost:8080/sell/wechat/userInfo";String redirectUrl=wxMpService.oauth2buildAuthorizationUrl(url,WxConsts.OAUTH2_SCOPE_BASE, URLEncoder.encode(returnUrl));log.info("【微信网页授权】获取code,redirectUrl={}",redirectUrl);return "redirect:"+redirectUrl;}

第一步:我们需要配置一个回调的网址url

第二步:调用sdk的方法
wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null)
然后会返回我们的重定向url,例如:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxd898fcb01713c658&redirect_uri=http://localhost:8080/sell/wechat/userInfo&response_type=code&scope=snsapi_base&state=www.baidu.com#wechat_redirect

第三步:重定向到http://localhost:8080/sell/wechat/userInfo,为什么会重定向到这个网址呢?其实刚刚开始我也是很纳闷的,然后看了微信网页授权文档,发现,文档这样描述:

所以到我们的项目中,就是重定向到http://localhost:8080/sell/wechat/userInfo,所以我们实现下面的这个方法。

2.1获得access token(官方文档)

当用户同意授权后,会回调所设置的url并把authorization code传过来,然后用这个code获得access token,其中也包含用户的openid等信息

WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);

2.2整合springboot

 @GetMapping("/userInfo")public String userInfo(@RequestParam("code") String code,@RequestParam("state") String returnUrl){WxMpOAuth2AccessToken wxMpOAuth2AccessToken=new WxMpOAuth2AccessToken();try {wxMpOAuth2AccessToken=wxMpService.oauth2getAccessToken(code);}catch (WxErrorException e){log.error("【微信网页授权】,{}",e);throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());}String openId=wxMpOAuth2AccessToken.getOpenId();return "redirect:"+ returnUrl+"?openid="+openId;}

1.2中我们知道,用户授权之后会重定向到redirect_uri/?code=CODE&state=STATE因此会传过来codestate,所以我们接受这两个参数。

到现在我们获取到了WxMpOAuth2AccessToken

然后,有了这个token之后,就可以进行用户操作了。

3获得用户基本信息(官方文档)

WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);

4刷新access token(官方文档)

wxMpOAuth2AccessToken = wxMpService.oauth2refreshAccessToken(wxMpOAuth2AccessToken.getRefreshToken());

5验证access token(官方文档)

boolean valid = wxMpService.oauth2validateAccessToken(wxMpOAuth2AccessToken);

点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本人已拿大厂 offer。
另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

最后,再分享我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,已经拿到了大厂 offer,整理成了一本电子书,拿去不谢,目录如下:

现在免费分享大家,在下面我的公众号 程序员的技术圈子 回复 面试 即可获取。

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

1、老铁们,关注我的原创微信公众号「程序员的技术圈子」,专注于 Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。

2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。

3、另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

点赞是对我最大的鼓励
↓↓↓↓↓↓

微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)相关推荐

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

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

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

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

  3. uniapp中h5网页微信公众号授权

    uniapp微信网页授权 uniapp中h5网页微信公众号授权 主要代码 获取code返回的code截取代码 uniapp中h5网页微信公众号授权 微信官方文档–>网页授权 uniapp中h5网 ...

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

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

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

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

  6. 微信公众号授权获取用户OpenID和UnionId然后发生消息通知

    微信公众号授权获取用户OpenID和UnionId然后发生消息通知 1.获取微信公众号code 1.微信公众拿取公众号appid和appSecret 2.网页域名授权,这里的域名拼接上html所在位置 ...

  7. 微信网页扫码登录与微信公众号授权登录的区别

    最近着手开发了微信网页扫码登录和公众号授权登录收获颇丰,两者的开发很类似.以下是我个人摸索过程中发现的两者的异同: 两者都可以通过微信客户端扫码授权的方式,让第三方页面获得微信用户的一些基本信息(昵称 ...

  8. 微信登录(微信公众号授权)的开发(详解)

    1.UnionId和OpenId 微信登录最重要的两个返回信息,一个是UnionId,一个是OpenId.两者之间有着必然的联系. 首先,先来理一下微信开放平台的架构.开发微信登录,必须有一个开放平台 ...

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

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

最新文章

  1. python类中方法的执行顺序-python – 新式类中的方法解析顺序(MRO)?
  2. iOS UIButton根据内容自动布局
  3. 《Python编程从入门到实践》学习笔记8(第9章:类)
  4. 如何清理 Weblogic Server 缓存
  5. android横竖屏切换布局闪退,Android-Activity横竖屏切换不杀死Activity 并监听横竖屏切换...
  6. 软件质量包括哪些特性?软件质量保证的主要任务是什么?
  7. 利用linux curl爬取网站数据
  8. Sqoop-MySQL导入hive时id为文本解决
  9. 一 VC2008环境中ICE的配置
  10. 发布一个域安全级别的无代码InfoPath表单作为文档库模版 (InfoPath 一)
  11. cvMatchTemplate() 模板匹配
  12. 这两款实用的win10录屏软件,你们千万别错过
  13. ST集成传感器方案实现电子罗盘功能
  14. php开发bt种子,[原创作品][PHP]BT种子打包推送小神器~~
  15. 使用工具(JD-GUI和APKIDE)反编译JAR的方法
  16. Java验证邮箱格式是否正确
  17. 在DialogFragment的onStop(完全不可见)时调用dismiss退出界面报错解决办法
  18. 群晖Docker的高级操作
  19. 金大侠的亲属与剑桥大学最厉害的三个学院
  20. 数据分析师发展前景怎么样?

热门文章

  1. 【C#】三维立体验证码 (3DCaptcha)
  2. 线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这
  3. 区块链BaaS云服务(16)天德链TDBC“系统介绍”
  4. (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV
  5. Bitcoin 地址原理(1)Base58编码
  6. go.sum中特殊hash如何计算
  7. Linux shell/makefile/gic/python指令速查-inprocess
  8. optee内存管理和页表建立
  9. [crypto]-30-The Armv8 Cryptographic Extension在linux中的应用
  10. angr学习笔记(11)(SimProcedure)