Java基于微信公众号接口实现授权登录源码及原理分析

article/2025/10/1 11:34:26

微信公众号授权登录操作前提必须注册微信公众平台账号,注意的是订阅号不支持授权登录操作,因此对于个人开发者注册的订阅号是无法实现的,必须注册企业号的微信平台账号而具体注册流程就不详细介绍了,有什么疑问可去微信公众号平台查看具体的文档。

接下来讲述一下具体的微信授权登录流程,打开微信开发文档官网(https://mp.weixin.qq.com/wiki),“微信网页开发”中找到“微信网页授权”,其中详细介绍了微信授权登录实现,如图:
这里写图片描述

AppId和AppSecret参数见下图:
这里写图片描述

网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

步骤一:首先需要获取code,具体发送链接如下:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
其中参数appid、redirect_uri、response_type、scope、state,具体说明如下图:
这里写图片描述

注意:当scope为snsapi_base(静默授权) ,就不会弹出授权页面;而scope为snsapi_userinfo(手动授权)时,是弹出授权页面的,可以获取用户的相关信息。

微信授权有两种网页授权方式
第一种静默授权:不会给登录用户任何提示直接返回用户code,但如果登录用户存在关注公众号的情况下,无法拿到登录用户的全部信息
以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

第二种手动授权:弹出授权页面,登录用户点击确定后可获取登录用户的信息
以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

参考案例:
静默授权 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
手动授权 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

步骤二:通过code值获取网页授权access_token票据
登录用户每次授权所携带的code都不一样,code只能使用一次,5分钟自动过期。
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
其中参数appid、secret、code、grant_type,具体说明如下图:
这里写图片描述

步骤三:刷新access_token(如果需要)
由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。

步骤四:拉取用户信息(需scope为 snsapi_userinfo)
获取用户信息网页授权作用域为snsapi_userinfo,此时开发者可以通过access_token和openid获取用户信息。具体链接如下:https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
其中参数access_token、openid、lang,具体说明如下图:
这里写图片描述

具体实现微信公众号授权登录代码,通过填写的回调url进入我们的后台登录调用方法
这里写图片描述
这里写图片描述
这里写图片描述

源码参考资料:http://blog.yoodb.com/yoodb/article/detail/1324

如果登录成功授权之后会返回正确的json格式数据,反之失败返回相对应的错误码。

推荐↓↓↓↓↓↓
这里写图片描述

更多推荐:微信公众号《优哉游哉》
关注微信公众号“优哉游哉”(w_z90110),回复“给我资料”四个字,免费领取资料视频和项目等。
微信公众号涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。


http://chatgpt.dhexx.cn/article/7Dpni9tL.shtml

相关文章

微信公众号多域名回调系统1.0发布

这是一款基于ThinkPHP6.0框架的微信公众号多域名回调系统。 微信公众号后台默认只能授权2个网页域名,用本系统可突破这个限制,用同一个公众号对接无限多个网站。网站后台支持回调域名白名单的管理,以及登录记录的查看。 本系统还有微信access…

PHP微信扫码关注公众号并授权登录源码

PHP微信扫码登录看起来简单,但做起来有点麻烦,开发起来就会浪费很多的时间。 PHP判断是否首次关注公众号,扫码关注公众号获取微信用户头像、openid和省市等信息源码。 演示体验地址: https://www.skpan.cn/user/login.html 网盘下载地址:…

2023最新微信公众号无限回调系统源码/已修复BUG亲测可用

正文: 测试环境: Nginx 1.20.2 MySQL 5.6.50 PHP-7.2 1.创建站点 2.到根目录上传源码 3.创建数据库并导入 4.修改数据库信息 根目录/config.php 第5,6,7行 5.后台地址域名/admin 账号admin 密码123456 6.修改域名 根目录下 api.php 第…

Java微信公众号开发登录

MySQL基础开发篇 这部分的内容应该更合适那些刚入坑的朋友们或者是对于基础部分掌握不牢固的朋友,因此有一定经验的或者基础不错的可以自动跳至下一章内容阅读,这部分我仅把目录内容截图展示。 MySQL的优化以及管理维护 MySQL作为一款关系型数据库,SQL语句的优化是尤其重要的…

mysql 推送微信公众号_10分钟完成微信公众号第三方平台全网发布

背景:在微信公众平台配置服务器URL时,使用了新浪云SAE自带的二级域名,提交时出现一个安全风险的警告,网上查了下,许多服务平台和团队也遇到同样的问题。 经过一番研究 … 为什么会有安全风险的警告? 微信公…

springboot微信公众号管理系统vue内容文章文件上传jsp源码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当做编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 这是一个基于springbootvue的微信公众号管理系统 二…

微信公众号迁移,需要做些什么

❤️ 个人主页:水滴技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 🌸 订阅专栏:微信公众平台 文章目录 一、开通开发者二、设置IP白名单三、自定义菜单四、认证五、网页授权域名六、模板消息七、转换…

PHP微信公众号网页授权登录 扫码登录 获取用户基本信息

前言 现在微信登录是一个网站、APP的标配,所以微信授权登录是我们应该要掌握的。微信授权登录有4种方式: 1、通过微信开放平台2、通过认证的微信服务号3、通过认证的微信订阅号4、通过微信小程序曲线救国 今天我们就讲解的是微信服务号,通…

微信公众号多域名回调系统

介绍: 这是一款基于ThinkPHP6.0框架的微信公众号多域名回调系统。 微信公众号后台默认只能授权2个网页域名,用本系统可突破这个限制,用同一个公众号对接无限多个网站。网站后台支持回调域名白名单的管理,以及登录记录的查看。 本…

微信公众号授权获取用户信息及jwt登录

Java 微信公众号授权获取用户信息及jwt登录 !!! 前言 前几篇文章小编分享过: 微信小程序授权获取用户手机号 jwt登录 (含源码)微信小程序支付 公众号支付 (含源码) 工作之余,分享下 “ 微信公众号授权 获取用户信…

手把手教程用Java实现微信公众号扫码登录功能

文章目录 前言一、环境准备二、使用步骤1. 使用微信工具包2. 创建数据表3. 登录页面代码逻辑4. 验证微信公众号登录 总结 前言 微信现今是我们必不可少的社交工具了,围绕微信这个生态实际上有很多东西可以做,我们经常会看到一些网站通过微信扫码进如公众…

[一维前缀和]leetcode303:区域和检索 - 数组不可变(easy)

题目&#xff1a; 题解&#xff1a; 一维前缀和&#xff0c;元素数组[0,j]的前缀和对应prefix[j1] 代码如下&#xff1a; class NumArray { private:vector<int> prefix; public://题解&#xff1a;一维前缀和NumArray(vector<int>& nums) {int nnums.size()…

前缀和矩阵前缀和

前缀和 前缀和是一种重要的预处理&#xff0c;能大大降低查询的时间复杂度。我们可以简单理解为“数列的前 n n n 项的和”。 例题 有 N N N 个的正整数放到数组 A A A 里&#xff0c;现在要求一个新的数组 B B B&#xff0c;新数组的第 i i i 个数 B [ i ] B[i] B[i]…

【算法基础】一维前缀和 + 二维前缀和

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…

前缀和与差分总结

目录 1.前缀和 2.前缀和算法的好处 3.二维前缀和 4.差分 5.一维差分 6.二维差分 1.前缀和 前缀和是指某序列的前n项和&#xff0c;可以把它理解为数学上的数列的前n项和&#xff0c;而差分可以看成前缀和的逆运算。合理的使用前缀和与差分&#xff0c;可以将某些复杂的…

一维前缀和

今天我们来讲讲一维前缀和 首先我们来介绍一下一维前缀和&#xff0c;emmm其实和数列的前n项和差不多&#xff0c;它能在 O ( 1 ) O(1) O(1) 的时间复杂度操作数组的任意子区间&#xff0c;比如我们要找出一段区间的和。 我们先预处理出一个前缀和数组&#xff0c;为了方便使…

【算法】前缀和(一维前缀和与二维前缀和)

前缀和是一种重要的预处理&#xff0c;能大大降低查询的时间复杂度。 【一维前缀和】 给定一个数组A[1,2,……n]&#xff0c;则它的前缀和数组为PrefixSum[1..n]。定义为&#xff1a;PrefixSum[i] A[0]A[1]...A[i-1]&#xff1b; 【例子】 A[5,6,7,8] --> PrefixSum[5,…

【Python 百练成钢】前缀和

文章目录 前言&#x1f607;一维前缀和&#x1f608;问题描述问题分析代码实现 二维前缀和&#x1f47f;问题描述问题分析代码实现 ฅʕ•̫͡•ʔฅ&#x1f4af; 前言&#x1f607; 今天分享一下学到的基础算法前缀和。 首先了解一下前缀和的基础概念&#x1f604; 有一个序列…

【每日一算法】二维前缀和算法 _ 模板应用

&#x1f49b; 前情提要&#x1f49b; 本章节是每日一算法的二维前缀和算法的相关知识~ 接下来我们即将进入一个全新的空间&#xff0c;对代码有一个全新的视角~ 以下的内容一定会让你对数据结构与算法有一个颠覆性的认识哦&#xff01;&#xff01;&#xff01; ❗以下内容…

基础算法:二维前缀和

二维前缀和C模板&#xff1a; S[i, j] 第i行j列格子左上部分所有元素的和 S[i, j] S[i-1,j] s[i,j-1] - S[i-1,j-1] a[i,j](表示当前的数) 以(x1, y1)为左上角&#xff0c;(x2, y2)为右下角的子矩阵的和为&#xff1a; S[x2, y2] - S[x1-1,y2] - S[x2,y1-1] S[x1-1,y1-1]…