微信小程序登陆,后端接口实现 - 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。

属性 类型 说明 最低版本 signature string 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 encryptedData string 包括敏感数据在内的完整用户信息的加密数据,详见 iv string 加密算法的初始向量,详见
自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>



笔记摘自: 、 、
经验分享 程序员 微信小程序 职场和发展