Pārlūkot izejas kodu

[core] Add missed refresh token logic for OnlinePush.SidTicketExpired (#2584)

sandtechnology 3 gadi atpakaļ
vecāks
revīzija
baf9ee4bf7

+ 4 - 1
mirai-core/src/commonMain/kotlin/network/protocol/packet/chat/receive/OnlinePush.SidExpired.kt

@@ -15,12 +15,15 @@ import net.mamoe.mirai.internal.network.Packet
 import net.mamoe.mirai.internal.network.protocol.packet.IncomingPacketFactory
 import net.mamoe.mirai.internal.network.protocol.packet.OutgoingPacket
 import net.mamoe.mirai.internal.network.protocol.packet.buildResponseUniPacket
+import net.mamoe.mirai.internal.network.protocol.packet.login.wtlogin.WtLogin10
 
 internal object OnlinePushSidExpired :
     IncomingPacketFactory<Packet?>("OnlinePush.SidTicketExpired", "OnlinePush.SidTicketExpired") {
 
     override suspend fun QQAndroidBot.handle(packet: Packet?, sequenceId: Int): OutgoingPacket {
-        return buildResponseUniPacket(client, sequenceId = sequenceId)
+        return buildResponseUniPacket(client, sequenceId = sequenceId).also {
+            bot.network.sendAndExpect(WtLogin10(client, mainSigMap = 1052896, remark = "10:refresh-token"))
+        }
     }
 
     override suspend fun ByteReadPacket.decode(bot: QQAndroidBot, sequenceId: Int): Packet? {

+ 3 - 2
mirai-core/src/commonMain/kotlin/network/protocol/packet/login/wtlogin/WtLogin10.kt

@@ -26,9 +26,10 @@ internal object WtLogin10 : WtLoginExt {
     operator fun invoke(
         client: QQAndroidClient,
         subAppId: Long = 100,
-        mainSigMap: Int = client.mainSigMap
+        mainSigMap: Int = client.mainSigMap,
+        remark: String = "10:fast-login",
     ) = WtLogin.ExchangeEmp.buildLoginOutgoingPacket(
-        client, bodyType = 2, key = ByteArray(16), remark = "10:fast-login"
+        client, bodyType = 2, key = ByteArray(16), remark = remark
     ) { sequenceId ->
         writeSsoPacket(
             client,