Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在没有输入密码时,会尝试在打开启动器时自动进行第三方登录 #5267

Open
1 task done
wuliaodexiaoluo opened this issue Dec 14, 2024 · 5 comments
Open
1 task done
Labels
· Bug 处理中 开发者正在调查或处理该项 🟥 高 优先度:高

Comments

@wuliaodexiaoluo
Copy link
Contributor

检查项

描述

当网络请求超时可能误判为需要使用密码重新登陆

虽然是 2.8.10 的代码,但是我看 Release 好像没提到有修这东西

重现步骤

进行 Microsoft 登录,并等待网络请求超时一次

日志与附件

Log1.txt

@wuliaodexiaoluo wuliaodexiaoluo added · Bug 新提交 需要社区初步确认其有效的新提交 labels Dec 14, 2024
@wuliaodexiaoluo wuliaodexiaoluo changed the title [Bug] 网络请求超时可能被误判为需要重新登陆 [Bug] 网络请求超时可能被误判为需要使用密码重新登陆 Dec 14, 2024
@wuliaodexiaoluo
Copy link
Contributor Author

补充:当时使用的登录方式为密码登录

@shimoranla
Copy link

shimoranla commented Dec 16, 2024

补充:当时使用的登录方式为密码登录

[15:17:54.711] 登录轮询第 1 次失败:你的网络环境不佳,导致难以连接到服务器。请检查网络,多重试几次,或尝试使用 VPN。
连接服务器超时,请检查你的网络环境是否良好(操作超时,https://login.microsoftonline.com/consumers/oauth2/v2.0/token)
————————————
详细错误信息:
→ 操作超时
   在 PCL.ModNet.NetRequestOnce(String Url, String Method, Object Data, String ContentType, Int32 Timeout, Dictionary`2 Headers, Boolean MakeLog, Boolean UseBrowserUserAgent, Boolean ReturnAllResponse) 位置 D:\CodeSpace\PCL2-4941\Plain Craft Launcher 2\Modules\Base\ModNet.vb:行号 477
   在 PCL.MyMsgLogin.WorkThread() 位置 D:\CodeSpace\PCL2-4941\Plain Craft Launcher 2\Pages\PageLaunch\MyMsgLogin.xaml.vb:行号 119
   在 System.Net.HttpWebRequest.GetResponse()
   在 PCL.ModNet.NetRequestOnce(String Url, String Method, Object Data, String ContentType, Int32 Timeout, Dictionary`2 Headers, Boolean MakeLog, Boolean UseBrowserUserAgent, Boolean ReturnAllResponse) 位置 D:\CodeSpace\PCL2-4941\Plain Craft Launcher 2\Modules\Base\ModNet.vb:行号 430
错误类型:System.Net.WebException
[15:18:02.502] [Control] 普通弹窗:需要使用密码登录
请在登录时选择 “其他登录方法”,然后选择 “使用我的密码”。
如果没有该选项,请选择 “设置密码”,设置完毕后再登录。

从请求超时到弹出窗口用了约 7.8 秒,不太可能是请求超时的问题
应该是在登录过程中已经登录账号但在输入密码并确认登录前选择了切换账号导致的

@LTCatt
Copy link
Member

LTCatt commented Dec 16, 2024

[15:15:34.094] 登录失败原始错误信息:服务器返回错误(ProtocolError,远程服务器返回错误: (400) 错误的请求。,https://littleskin.cn/api/yggdrasil/authserver/authenticate)
{"message":["username should not be empty","password should not be empty"],"error":"Bad Request","statusCode":400}
→ 远程服务器返回错误: (400) 错误的请求。

PCL 似乎在没有输入密码的时候尝试在打开启动器时自动登录了

@LTCatt LTCatt changed the title [Bug] 网络请求超时可能被误判为需要使用密码重新登陆 在没有输入密码时,会尝试在打开启动器时自动进行第三方登录 Dec 16, 2024
@LTCatt LTCatt added 处理中 开发者正在调查或处理该项 🟨 中 优先度:中 🟥 高 优先度:高 and removed 新提交 需要社区初步确认其有效的新提交 🟨 中 优先度:中 labels Dec 16, 2024
@wuliaodexiaoluo
Copy link
Contributor Author

wuliaodexiaoluo commented Dec 21, 2024

经过后续检查,这是 #5132 的逻辑错误

相关代码为

        If LittleSkinClientId IsNot Nothing Then Return ""
        If LoginData.UserName = "" Then Return "账号不能为空!"
        If LoginData.Password = "" Then Return "密码不能为空!"
        Return ""

定义为

    ' LittleSkin OAuth ClientId
    Public Const LittleSkinClientId = ""

正确逻辑应为 If Not LittleSkinClientId = "" Then Return "",代码中错写为 If LittleSkinClientId IsNot Nothing Then Return ""

        If Not LittleSkinClientId = "" Then Return ""
        If LoginData.UserName = "" Then Return "账号不能为空!"
        If LoginData.Password = "" Then Return "密码不能为空!"
        Return ""

稍后将推送代码修复此问题

@wuliaodexiaoluo wuliaodexiaoluo closed this as not planned Won't fix, can't repro, duplicate, stale Dec 21, 2024
@HexDragon-Bot HexDragon-Bot added 忽略 因为各种杂项原因而关闭 and removed 处理中 开发者正在调查或处理该项 🟥 高 优先度:高 labels Dec 21, 2024
@LTCatt
Copy link
Member

LTCatt commented Dec 21, 2024

诶诶诶别关了啊

@LTCatt LTCatt reopened this Dec 21, 2024
@LTCatt LTCatt added 处理中 开发者正在调查或处理该项 🟥 高 优先度:高 and removed 忽略 因为各种杂项原因而关闭 labels Dec 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
· Bug 处理中 开发者正在调查或处理该项 🟥 高 优先度:高
Projects
None yet
Development

No branches or pull requests

4 participants