Skip to content

Commit a23ab42

Browse files
committed
refactor(auth): 重构认证逻辑并更新版本号
- 移除 lombok 自动生成的日志类 - 更新认证方式,使用 Start0 类中的 getAccessToken 方法获取访问令牌 - 修改 BaseConnectedEvent 中的版本号为 1.5.2-L1 - 更新 pom.xml 中的版本号为 1.5.2-L1
1 parent c72ad63 commit a23ab42

4 files changed

Lines changed: 20 additions & 13 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.kloping</groupId>
88
<artifactId>bot-qqpd-java</artifactId>
9-
<version>1.5.2-R3</version>
9+
<version>1.5.2-L1</version>
1010

1111
<packaging>jar</packaging>
1212
<name>bot-qqpd-java</name>

src/main/java/io/github/kloping/qqbot/Start0.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.github.kloping.qqbot;
22

3-
import io.github.kloping.judge.Judge;
43
import io.github.kloping.qqbot.entities.qqpd.Channel;
54
import io.github.kloping.qqbot.http.AuthV2Base;
65
import io.github.kloping.qqbot.http.data.Token;
@@ -24,8 +23,9 @@ public class Start0 {
2423
ContextManager contextManager;
2524

2625
public Map<String, String> getHeaders() {
26+
if (isExpired(token)) headers.clear();
2727
if (headers.isEmpty()) {
28-
headers.put("Authorization", contextManager.getContextEntity(String.class, Starter.AUTH_ID));
28+
headers.put("Authorization", String.format("QQBot %s", getV2Token()));
2929
headers.put("Accept-Encoding", "application/json");
3030
}
3131
return headers;
@@ -34,9 +34,7 @@ public Map<String, String> getHeaders() {
3434
public Map<String, String> getV2Headers() {
3535
if (isExpired(token)) v2headers.clear();
3636
if (v2headers.isEmpty()) {
37-
String secret = contextManager.getContextEntity(String.class, Starter.SECRET_ID);
38-
if (Judge.isEmpty(secret)) return v2headers;
39-
v2headers.put("Authorization", String.format("QQBot %s", getV2Token(secret)));
37+
v2headers.put("Authorization", String.format("QQBot %s", getV2Token()));
4038
v2headers.put("X-Union-Appid", contextManager.getContextEntity(String.class, Starter.APPID_ID));
4139
}
4240
return v2headers;
@@ -49,14 +47,20 @@ private boolean isExpired(Token token) {
4947
@AutoStand
5048
AuthV2Base authV2Base;
5149

50+
5251
private Token token;
5352

54-
private String getV2Token(String secret) {
53+
private String getV2Token() {
54+
String appid = contextManager.getContextEntity(String.class, Starter.APPID_ID);
55+
String secret = contextManager.getContextEntity(String.class, Starter.SECRET_ID);
5556
token = authV2Base.auth(
56-
String.format("{\"appId\": \"%s\",\"clientSecret\": \"%s\"}\n", contextManager.getContextEntity(String.class, Starter.APPID_ID), secret)
57-
, Channel.SEND_MESSAGE_HEADERS
58-
);
57+
String.format("{\"appId\": \"%s\",\"clientSecret\": \"%s\"}\n", appid, secret)
58+
, Channel.SEND_MESSAGE_HEADERS);
5959
token.setT0(System.currentTimeMillis());
6060
return token.getAccess_token();
6161
}
62+
63+
public String getAccessToken() {
64+
return isExpired(token) ? getV2Token() : token.getAccess_token();
65+
}
6266
}

src/main/java/io/github/kloping/qqbot/impl/BaseConnectedEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public String getId() {
5050
return getMetadata().get("id").toString();
5151
}
5252

53-
public static final String VERSION = "1.5.2-R3";
53+
public static final String VERSION = "1.5.2-L1";
5454
public static final String PROJECT_NAME = "qqpd-bot-java";
5555
public static final String AUTHOR = "kloping";
5656
public static final String FORMAT = "Bot(%s) connected! By " + AUTHOR + " of " + PROJECT_NAME + " v" + VERSION;

src/main/java/io/github/kloping/qqbot/network/AuthAndHeartbeat.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.alibaba.fastjson.JSONObject;
55
import io.github.kloping.common.Public;
66
import io.github.kloping.date.FrameUtils;
7+
import io.github.kloping.qqbot.Start0;
78
import io.github.kloping.qqbot.Starter;
89
import io.github.kloping.qqbot.api.event.Event;
910
import io.github.kloping.qqbot.entities.Bot;
@@ -17,7 +18,6 @@
1718
import io.github.kloping.spt.annotations.Entity;
1819
import io.github.kloping.spt.interfaces.Logger;
1920
import io.github.kloping.spt.interfaces.component.ContextManager;
20-
import lombok.extern.slf4j.Slf4j;
2121
import org.java_websocket.client.WebSocketClient;
2222

2323
import java.util.concurrent.Future;
@@ -104,6 +104,9 @@ private void delayIdentifyConnect(int code, WebSocketClient wss) {
104104
@AutoStand
105105
Config config;
106106

107+
@AutoStand
108+
Start0 start0;
109+
107110
public void identifyConnect(int code, WebSocketClient wss) {
108111
if (!config.getReconnect()) return;
109112
Future future = contextManager.getContextEntity(Future.class, Starter.MAIN_FUTURE_ID);
@@ -144,7 +147,7 @@ public boolean onReceive(Pack pack) {
144147
authPack = new Pack();
145148
authPack.setOp(2);
146149
JSONObject jo = new JSONObject();
147-
jo.put(TOKEN_ID, contextManager.getContextEntity(String.class, AUTH_ID));
150+
jo.put(TOKEN_ID, "QQBot " + start0.getAccessToken());
148151
jo.put(INTENTS_ID, contextManager.getContextEntity(Integer.class, INTENTS_ID));
149152
jo.put(SHARD_ID, contextManager.getContextEntity(Integer[].class, SHARD_ID));
150153
jo.put(PROPERTIES_ID, new Object());

0 commit comments

Comments
 (0)