starcatmeow / vjudge-helper

VJudge helper plugin helps you view contests problems and submit code directly in Visual Studio Code
MIT License
10 stars 0 forks source link

在mac中无法登录 #1

Closed amcones closed 3 years ago

amcones commented 3 years ago

使用M1 mac mini和intel MacBook pro测试,不会弹出输入登录信息的框。

starcatmeow commented 3 years ago

请问是直接从 VS Code Extension Marketplace 下载的吗,macOS需要在GitHub Releases里面下载安装😭。

目前版本原理是在后台启动了一个headless的Chromium,然后去模拟访问VJudge再抓取信息到VS Code显示,而这个Chromium是打包在vsix里的,所以不同系统暂时不能通用。

starcatmeow commented 3 years ago

后续版本应该会更改为直接请求VJudge API,这样就不用打包一个巨大的Chromium了,也能提高性能、减少内存占用。

amcones commented 3 years ago

请问是直接从 VS Code Extension Marketplace 下载的吗,macOS需要在GitHub Releases里面下载安装😭。

目前版本原理是在后台启动了一个headless的Chromium,然后去模拟访问VJudge再抓取信息到VS Code显示,而这个Chromium是打包在vsix里的,所以不同系统暂时不能通用。

是的,然后刚才测试了下从GitHub Release下载安装,在intel Mac上使用良好,M1 Mac则和之前一样,可能是因为打包的Chromium无法在M1上运行? 这个插件很棒,很大程度上提高了vj的使用体验,非常感谢~

starcatmeow commented 3 years ago

或许可以试试把~/.vscode/extensions/starcatmeow.vjudge-helper-0.1.3/node_modules/puppeteer/.local-chromium/mac-856583/chrome-mac下的Chromium.app这里的arm64版Chromium替换一下?最近可能不是很有时间去分析VJudge API,可能只能先这样将就用着。

amcones commented 3 years ago

尝试了一下,下载下来的Chromium打开提示已损坏,替换到目录下插件使用情况依旧。

starcatmeow commented 3 years ago

稍等,我在我intel Mac上先用universal版测试一下,感觉应该是签名问题

starcatmeow commented 3 years ago

https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac_Arm/924182/chrome-mac.zip

还是用这里的吧,然后先按住control左键打开一次之后,再放到插件目录下替换

amcones commented 3 years ago

还是和之前一样,提示已损坏orz

starcatmeow commented 3 years ago

刚才我更换成直接请求api了,不再需要chromium了,试试在 VS Code Marketplace 里面更新到最新的 v0.2.1

amcones commented 3 years ago

刚才在三个平台上进行了测试,win上将vsc更新到insider2后可以正常使用,intel和m1上可以输入账号和密码,回车后login条到一半消失,更新vsc情况依旧。win在更新到insider2之前也是一样的情况。

starcatmeow commented 3 years ago

可以麻烦提供一下intel和m1上vscode的详细版本信息(包含nodejs,electron版本)吗,在左上角Code -> About Visual Studio Code中能看到。

我在之前测试时也发现有类似问题,但更新到stable频道的最新版vscode后解决了,似乎是因为 https://github.com/microsoft/vscode/issues/134244

amcones commented 3 years ago

M1: 版本: 1.61.0 提交: ee8c7def80afc00dd6e593ef12f37756d8f504ea 日期: 2021-10-07T18:10:20.463Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin arm64 20.6.0

intel: Version: 1.61.0 Commit: ee8c7def80afc00dd6e593ef12f37756d8f504ea Date: 2021-10-07T18:11:58.853Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin x64 20.6.0

amcones commented 3 years ago

M1: 版本: 1.61.0 提交: ee8c7def80afc00dd6e593ef12f37756d8f504ea 日期: 2021-10-07T18:10:20.463Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin arm64 20.6.0

intel: Version: 1.61.0 Commit: ee8c7def80afc00dd6e593ef12f37756d8f504ea Date: 2021-10-07T18:11:58.853Z Electron: 13.5.1 Chrome: 91.0.4472.164 Node.js: 14.16.0 V8: 9.1.269.39-electron.0 OS: Darwin x64 20.6.0

starcatmeow commented 3 years ago

奇怪,我也是这个版本,但并不能复现问题。可否点击vscode Help菜单下的Toggle Developer Tools,然后点到Console再尝试登录,看有没有什么错误信息。

amcones commented 3 years ago

登录的时候报了两个警告,如下: console.ts:137 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:36,col:1] v @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 @ ipc.net.ts:50 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188 console.ts:137 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:290,col:1] v @ console.ts:137 $logExtensionHostMessage @ mainThreadConsole.ts:39 _doInvokeHandler @ rpcProtocol.ts:472 _invokeHandler @ rpcProtocol.ts:457 _receiveRequest @ rpcProtocol.ts:373 _receiveOneMessage @ rpcProtocol.ts:295 (anonymous) @ rpcProtocol.ts:160 fire @ event.ts:577 fire @ ipc.net.ts:513 receiveMessage @ ipc.net.ts:871 (anonymous) @ ipc.net.ts:710 fire @ event.ts:577 acceptChunk @ ipc.net.ts:286 (anonymous) @ ipc.net.ts:247 @ ipc.net.ts:50 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188

starcatmeow commented 3 years ago

额。。那应该不是证书相关问题,但我无法定位问题。可否一会儿我打包一个调试版本,然后再麻烦你帮忙测试一下?

amcones commented 3 years ago

okk没问题👌

starcatmeow commented 3 years ago

vjudge-helper-0.2.1.vsix.zip ❯ sha512sum vjudge-helper-0.2.1.vsix.zip
b5ead33e2c652881678c6d05ba0f94906bbde7122c3aa0662c49fc7272405ff05b7af6476e847999c4a4054d5bc5ffbe4838f9a7bee68c1bf3e038ab31a53d12 vjudge-helper-0.2.1.vsix.zip

解压后从vsix安装,然后还是打开console后再登录,然后发一下输出的log(其中包含的用户id可以去掉)

amcones commented 3 years ago

workbench.desktop.main.js:71 [Extension Host] vjudge login result: success workbench.desktop.main.js:71 [Extension Host] retrieved profile html length: 9405 workbench.desktop.main.js:71 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:36,col:1] v @ workbench.desktop.main.js:71 $logExtensionHostMessage @ workbench.desktop.main.js:1505 _doInvokeHandler @ workbench.desktop.main.js:1505 _invokeHandler @ workbench.desktop.main.js:1505 _receiveRequest @ workbench.desktop.main.js:1505 _receiveOneMessage @ workbench.desktop.main.js:1505 (anonymous) @ workbench.desktop.main.js:1505 fire @ workbench.desktop.main.js:69 fire @ workbench.desktop.main.js:85 receiveMessage @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 fire @ workbench.desktop.main.js:69 acceptChunk @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 @ workbench.desktop.main.js:2923 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188 workbench.desktop.main.js:71 [Extension Host] [xmldom warning] attribute "async" missed value!! "async" instead2!! @#[line:290,col:1] v @ workbench.desktop.main.js:71 $logExtensionHostMessage @ workbench.desktop.main.js:1505 _doInvokeHandler @ workbench.desktop.main.js:1505 _invokeHandler @ workbench.desktop.main.js:1505 _receiveRequest @ workbench.desktop.main.js:1505 _receiveOneMessage @ workbench.desktop.main.js:1505 (anonymous) @ workbench.desktop.main.js:1505 fire @ workbench.desktop.main.js:69 fire @ workbench.desktop.main.js:85 receiveMessage @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 fire @ workbench.desktop.main.js:69 acceptChunk @ workbench.desktop.main.js:85 (anonymous) @ workbench.desktop.main.js:85 @ workbench.desktop.main.js:2923 emit @ events.js:315 addChunk @ internal/streams/readable.js:309 readableAddChunk @ internal/streams/readable.js:284 Readable.push @ internal/streams/readable.js:223 onStreamRead @ internal/stream_base_commons.js:188 workbench.desktop.main.js:71 [Extension Host] parsed dom workbench.desktop.main.js:71 [Extension Host] userid element not null: false workbench.desktop.main.js:71 [Extension Host] userid element attrs

starcatmeow commented 3 years ago

我可能猜到原因了,你登录的时候输入的是邮箱还是用户名?目前我的代码逻辑需要使用用户名才能正常工作。(获取用户ID的方式为拼接输入的用户名到https://vjudge.net/user/ 后,然后获取页面内容并提取其中visitor_userId的内容)

amcones commented 3 years ago

我输入的是用户名0.0可能在mac下进去了别的字符?

starcatmeow commented 3 years ago

在windows测试的时候也是同一网络环境和账号吗?

我这边mac上也没有问题,感觉有点奇怪

starcatmeow commented 3 years ago

找到问题了,可能是因为某种原因导致vjudge认为你没有登录,在返回的结果中就不会存在你的userid。我试着加一个延时并换一种获取id方式

starcatmeow commented 3 years ago

vjudge-helper-0.2.1.vsix.zip

这次我用正则匹配来获取用户id,试试看能不能正常用吧。

amcones commented 3 years ago

可以了!!!在两台mac上均可使用,但是爬到的列表和win上不同,win上爬到的contest是group下的,而mac上爬到的是上面菜单里的

starcatmeow commented 3 years ago

哦,那我怀疑应该还是没有登录成功。。。登录不成功爬取比赛列表就只能是all contest里的。 我明天找台其他机器看看能否复现这个问题吧。

amcones commented 3 years ago

确实orz交代码报错 辛苦了

starcatmeow commented 3 years ago

可以试试最新的 v0.2.2 版本,我刚修改成了手动存 Cookie,在之前能复现的环境下正常了。

刷新一下 VS Code 插件列表应该可以直接从 Marketplace 更新。

amcones commented 3 years ago

可以了!在三个平台下都可以正常使用,感动

starcatmeow commented 3 years ago

感谢你对插件的支持,有bug或功能建议欢迎提出哦!