一、登录流程
首先我们看下官方提供的登录流程图,小程序端通过wx.login()获取登录需要得登录凭证code,然后将该code传递给后端接口,配合小程序参数appId、srcret实现登录验证,验证成功后获得相关信息如:openId、session_key。后续使用openId、session_key等实现自定义的登录状态,例如生成token返回给前端。

二、代码实现
1、前端涉及接口
(1)wx.login() 获取登录凭证 code
(2)wx.getUserInfo() 获取用户信息 encryptedData、iv
2、涉及依赖
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>4.0.7.B</version>
</dependency>
3、Controller层实现
LoginParam:
/**
* 登陆LoginDTO
*/
@Getter
@Setter
public class LoginParam {
/**
* 登录凭证
*/
@NotEmpty(message = "参数code不能为空!")
private String code;
/**
* 微信登录接口返回的加密用户信息
*/
@NotEmpty(message = "参数encryptedData不能为空!")
private String encryptedData;
/**
* 加密偏移数据
*/
@NotEmpty(message = "参数iv不能为空!")
private String iv;
}
Controller:
@RestController
@Validated
public class AuthWxController {
@Autowired
private AuthWxService authWxService;
/**
* 微信小程序登录
**/
@ApiOperation("微信小程序登录")
@PostMapping("/auth/wx/doLogin")
public CommonResult<String> doLogin(@RequestBody @Valid LoginParam loginParam) {
return CommonResult.data(authWxService.doLogin(loginParam));
}
}
4、Service层实现
AuthWxService:
/**
* 微信
*/
public interface AuthWxService {

最低0.47元/天 解锁文章
1283

被折叠的 条评论
为什么被折叠?



