主要写Web的第三方登录
提前准备的工具
1. 本地安装redis
https://blog.csdn.net/weixin_43829443/article/details/112638809
2. 云端安装redis
https://www.acwing.com/blog/content/31098/
3. 后端的依赖
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.3</version>
</dependency>
4. 后端工具类
package com.kob.backend.service.impl.user.account.acwing.utils;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.List;
public class HttpClientUtil {
public static String get(String url, List<NameValuePair> params) {
URIBuilder uriBuilder = null;
try {
uriBuilder = new URIBuilder(url);
} catch (URISyntaxException e) {
e.printStackTrace();
return null;
}
uriBuilder.setParameters(params);
try (CloseableHttpClient client = HttpClients.createDefault()) {
HttpGet httpGet = new HttpGet(uriBuilder.build());
CloseableHttpResponse response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
return EntityUtils.toString(entity);
} catch (IOException | URISyntaxException e) {
e.printStackTrace();
return null;
}
}
}
如上图,关于引入第三方登录主要思路
Client向Web发送请求—>Web请求AcWing OAuth2授权—>AcWing要求Client确认授权许可
—>Client确认授权后—>AcWing返回授权码(code),发送给Web—>
Web将授权码,APPid,Appsecret发送至AcWing—>AcWing返回access_token,openid给Web
—>Web用access_token向AcWing请求用户名,头像等信息—>AcWing返回用户名,头像等信息给Web
1. Web端第三方登录
- WebService
- WebServiceImpl
- WebController
在 WebService中封装了两个类 一个是申请applyCode() 一个是receiveCode(String code,String state)
applyCode()
作用
申请授权码code
receiveCode(String code,String state)
作用
申请授权令牌access_token和用户的openid, 申请用户信息
一些小操作
进程关闭
ps aux | grep java
复制PID(靠近acs的)
kill -9 PID
Docker 数据库
sudo mysql -uroot -p123456
use kob;
desc user;(展示列)
select * from user;(展示所有数据)
select * from user where username=’‘
delete from user where username=’‘
在数据库的user表中添加列openid:alter table user add column openid varchar(200);
后端打包操作
backge
进入不同模块的target
scp backend-0.0.1-SNAPSHOT.jar springboot:kob/backendcloud/
scp botrunningsystem-0.0.1-SNAPSHOT.jar springboot:kob/backendcloud/
scp matchingsystem-0.0.1-SNAPSHOT.jar springboot:kob/backendcloud/
重启后端
ssh springboot
cd kob/backendcloud/
后端开启的情况下先关掉Ctrl+C
java -jar backend-0.0.1-SNAPSHOT.jar
java -jar botrunningsystem-0.0.1-SNAPSHOT.jar
java -jar matchingsystem-0.0.1-SNAPSHOT.jar