微信公众号网页授权登录获取用户基本信息
概述
详细
一、前言
(1)适合人群
1,JAVA服务端开发人员
2,初级人员开发人员
3,了解spring springboot + maven
3,了解公众号开发
(2)你需要准备什么?
1,积极主动学习
2,微信公众号开发基本流程
3,java后端几大框架掌握如(spring springboot maven mybatis)
二、前期准备工作
软件环境:日食
官方下载:HTTPS://www.eclipse.org/downloads/
(1)基本需求
实现微信授权登陆带参数获取用户基本信息
(2)项目目录结构
三、实现步骤
(1)官方流程
网页授权流程分为四步:
a、引导用户进入授权页面同意授权,获取code
b、通过code换取网页授权access_token(与基础支持中的access_token不同)
c、如果需要,开发者可以刷新网页授权access_token,避免过期
d、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)
1.填写授权回调页面域名
进入测试公众号,在体验接口权限表中找到网页帐号,右侧添加自己的域名,测试公众号可填写本地IP,如你是正式公众号只能填写自己的域名,如果未填写,当进行接口调用时,会提示:redirect_uri参数错误!如果还有其他不了解的配置,可以在开发文档里查看详信息,
2,下面展示访问个人中心时,进行用户授权
1 | @RequestMapping ( "/weixinAutoLogin" )<br data-filtered= "filtered" > public void weixinAutoLogin(String userId,HttpServletRequest request, HttpServletResponse response) throws IOException {<br data-filtered= "filtered" > response.setHeader( "Access-Control-Allow-Origin" , "*" );<br data-filtered= "filtered" > /**<br data-filtered="filtered"> *这儿一定要注意!!首尾不能有多的空格(因为直接复制往往会多出空格),其次就是参数的顺序不能变动<br data-filtered="filtered"> **/ <br data-filtered= "filtered" > String url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + AuthUtil.APPID +<br data-filtered= "filtered" > "&redirect_uri=" + URLEncoder.encode(AuthUtil.Notify_url, "UTF-8" ) +<br data-filtered= "filtered" > "&response_type=code" +<br data-filtered= "filtered" > "&scope=snsapi_userinfo" +<br data-filtered= "filtered" > "&state=" + userId +<br data-filtered= "filtered" > "#wechat_redirect" ;<br data-filtered= "filtered" > response.sendRedirect(url);<br data-filtered= "filtered" > } |
3,在微信打开地址测试 http://ib58jt.natappfree.cc/weixinAutoLogin?userId=1 如图
4,用户同意授权后
第一先请求 code:code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。第二步通过刚请求来的 code去请求access_token和openid,第三部就是通过刚获取的access_token和openid来请求用户信息。
5,下面提供一个内网映射外网,软件下载地址还有教程可以做公众号开发
我用的是测试号没有可以申请测试一些基本功能微信都有提供
官方链接:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?