微信小程序登陆,后端接口实现 - springboot
登录流程
1、通过调用wx.login获取登录凭证(code)
-
uni-app通过调用
2、前端将code提交给服务器,springboot访问 ,使用 code 换取 openid、unionid、session_key 等信息。
3、完成登录操作,返回token给前端。
测试发现,个人小程序无法获取unionid
步骤一
通过获取登录凭证(code)
示例:uni-app项目中,使用获取登录凭证(code)
wx.login
code,用户登录凭证(有效期五分钟)。开发者需要在开发者服务器后台调用 ,使用 code 换取 openid、unionid、session_key 等信息。
wx.getUserProfile
获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。
自2022年11月8日24时起,。wx.getUserProfile,在uni-app中是。若该方法未失效,可使用code换取的session_key将encryptedData解密,获取用户信息。
步骤二
前端将code提交给服务器,springboot访问 ,使用 code 换取 openid、unionid、session_key 等信息。
springboot示例
配置文件
配置文件application.properties
登录获取小程序的AppID、AppSecret
Controller
Service
使用注解@Value获取配置在springboot配置文件中的参数:
获取session_key等
访问 ,使用 code 换取 openid、unionid、session_key 等信息:
-
封装方法getSessionKeyByWX,使用 code 换取 openid、session_key getSessionKey,调用getSessionKeyByWX,获取session_key
获取用户数据
使用 session_key 解密encryptedData数据,获取用户信息(已废弃,encryptedData中没有用户数据):调用getUserInfo前,先调用getSessionKey获取session_key。
登录
doWxLogin,调用getSessionKeyByWX,获取openid,实现自动登录
说明
本博客中的案例,使用的maven依赖如下:http请求、AES解密均使用的是hutool
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 启用web支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- hutool--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.10</version> </dependency>
笔记摘自: 、 、
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
小程序点餐系统,外卖点餐系统源码