SpringBoot前后端分离项目做微信第三方登录代码
时间: 2024-06-09 08:07:33 浏览: 18
在 SpringBoot 前后端分离项目中实现微信第三方登录需要以下步骤:
1. 注册微信开放平台账号,创建应用,获取 AppID 和 AppSecret。
2. 在前端页面中调用微信授权登录 API,获取到用户授权后得到的 code。
3. 将 code 发送到后端,后端通过调用微信 API 获取 access_token 和 openid。
4. 根据 openid 查询用户是否已经注册,如果已经注册则直接登录,否则需要跳转到注册页面。
5. 注册用户时需要获取用户的昵称、头像等信息,可以通过调用微信 API 获取。
6. 登录成功后需要生成 token 并返回给前端,前端将 token 存储在本地,后续请求需要携带该 token。
下面是一个示例代码:
1. 前端页面调用微信授权登录 API
```javascript
function wechatLogin() {
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=<AppID>&redirect_uri=<Redirect_URI>&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
}
```
2. 后端获取 access_token 和 openid
```java
String code = request.getParameter("code");
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code";
JSONObject jsonObject = HttpUtil.getJson(url);
String accessToken = jsonObject.getString("access_token");
String openId = jsonObject.getString("openid");
```
3. 根据 openid 查询用户是否已经注册
```java
User user = userService.getUserByOpenId(openId);
if (user == null) {
// 跳转到注册页面
} else {
// 直接登录
}
```
4. 注册用户并获取用户信息
```java
String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN";
JSONObject userInfo = HttpUtil.getJson(userInfoUrl);
String nickname = userInfo.getString("nickname");
String avatarUrl = userInfo.getString("headimgurl");
// 注册用户并返回用户信息
```
5. 生成 token 并返回给前端
```java
String token = JwtUtil.createToken(user.getId());
return Result.success(token);
```
需要注意的是,微信授权登录的 API 需要在微信客户端中打开,否则会提示“该链接无法访问”。