我是靠谱客的博主 要减肥小懒虫,最近开发中收集的这篇文章主要介绍app绑定微信第三方授权登录一、继续上编文章的短信验证码账号注册登录,这次是微信授权登录二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、继续上编文章的短信验证码账号注册登录,这次是微信授权登录

二、使用步骤

1.引入库

<!-- 苹果登录 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>jwks-rsa</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.16</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred -->
<version>0.11.2</version>
<scope>runtime</scope>

2.读入数据

controller层

 @ApiOperation(value = "微信授权登录")
public DataResult loginByWeChat(@RequestParam("code") String code) throws Exception {
return DataResult.success(sUserService.loginByWeChat(code));
}

server层

public UserVO loginByWeChat(String code) {
UserVO respVO = new UserVO();
try {
//通过第一步获得的code获取微信授权信息
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AuthUtil.APPID + "&secret="
+ AuthUtil.APPSECRET + "&code=" + code + "&grant_type=authorization_code";
JSONObject jsonObject = AuthUtil.doGetJson(url);
String openid = jsonObject.getString("openid");
String token = jsonObject.getString("access_token");
String infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + token + "&openid=" + openid
+ "&lang=zh_CN";
JSONObject userInfo = AuthUtil.doGetJson(infoUrl);
//成功获取授权,以下部分为业务逻辑处理
if (userInfo != null && openid != null && openid.equals("")){
String nickname = userInfo.getString("nickname");
String headimgurl = userInfo.getString("headimgurl");// 昵称
headimgurl = headimgurl.replace("\", "");//头像
SUserEntity sUser
= sUserMapper.selectOne(Wrappers.<SUserEntity>lambdaQuery().eq(SUserEntity::getOpenId, openid));
if (ObjectUtils.isNotEmpty(sUser)){//已绑定微信
String accessToken = httpSessionService.createToken(sUser);
BeanUtils.copyProperties(sUser, respVO);
respVO.setAccessToken(accessToken);
return respVO;
}else {//未绑定微信
respVO.setOpenId(openid);
return respVO;
}
}else {
throw new RuntimeException("登录失败!!!");
}
} catch (Exception e) {
throw new RuntimeException("登录失败!!!");
}
}

微信授权登录工具类

public UserVO loginByWeChat(String code) {
UserVO respVO = new UserVO();
try {
//通过第一步获得的code获取微信授权信息
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + AuthUtil.APPID + "&secret="
+ AuthUtil.APPSECRET + "&code=" + code + "&grant_type=authorization_code";
JSONObject jsonObject = AuthUtil.doGetJson(url);
String openid = jsonObject.getString("openid");
String token = jsonObject.getString("access_token");
String infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + token + "&openid=" + openid
+ "&lang=zh_CN";
JSONObject userInfo = AuthUtil.doGetJson(infoUrl);
//成功获取授权,以下部分为业务逻辑处理
if (userInfo != null && openid != null && openid.equals("")){
String nickname = userInfo.getString("nickname");
String headimgurl = userInfo.getString("headimgurl");// 昵称
headimgurl = headimgurl.replace("\", "");//头像
SUserEntity sUser
= sUserMapper.selectOne(Wrappers.<SUserEntity>lambdaQuery().eq(SUserEntity::getOpenId, openid));
if (ObjectUtils.isNotEmpty(sUser)){//已绑定微信
String accessToken = httpSessionService.createToken(sUser);
BeanUtils.copyProperties(sUser, respVO);
respVO.setAccessToken(accessToken);
return respVO;
}else {//未绑定微信
respVO.setOpenId(openid);
return respVO;
}
}else {
throw new RuntimeException("登录失败!!!");
}
} catch (Exception e) {
throw new RuntimeException("登录失败!!!");
}
}

总结

完成!!!!

最后

以上就是要减肥小懒虫为你收集整理的app绑定微信第三方授权登录一、继续上编文章的短信验证码账号注册登录,这次是微信授权登录二、使用步骤总结的全部内容,希望文章能够帮你解决app绑定微信第三方授权登录一、继续上编文章的短信验证码账号注册登录,这次是微信授权登录二、使用步骤总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部