Skip to content

wsl2下使用ok提交作业显示鉴权失败的解决方案

问题

假定你安装了wsl2,在其上安装了python,且在Windows系统上安装了vscode并使用其wsl插件搭建服务器实现代码编写调试和编译等操作

这时你可能会发现一个问题,你按照SICP插件的说明试图提交你的代码,但是terminal发出了如下的报错

MXPNAISVL0XW0VY__BH4__K

问题原因

造成这个问题的原因好像有很多,包括但不限于:

  • vscode的wsl插件搭建的服务器代理了ok的鉴权请求
  • 你的wsl没有正确安装或者没有安装图形浏览器
  • root用户下不能以非沙箱模式启动浏览器,而ok好像不会管这种事情
  • 你没有正确配置Windows下的防火墙设置导致唤起系统浏览器失败
  • 你没有登录oj(?)
  • 等等

这种情况比较难绷,下面的步骤可能帮助你解决问题并继续使用wsl

问题解决

根据@Iroha 的评论,直接安装wslu好像也可以解决绝大多数人的问题,可以优先尝试此解决方案,但个人安装后提示DISPLAY变量相关错误,且本人尝试过的方案无法解决此错误,在wslu无效之后可以尝试下面的解决方案。

  1. 检查浏览器是否存在且可用
    在终端输入xdg-open https://sicp.pascal-lab.net/2023/并登陆oj,大部分发布版都会预装xdg-utils
  • 如果被提示找不到命令之类的,请执行sudo apt-get install xdg-utilsyum install xdg-utils等,根据你的实际情况而定
  • 如果被提示请使用沙箱模式,请su到一个其他用户执行,不要使用root用户,也不要遵从他的提示开沙箱模式
  • 如果提示没有可执行此操作的程序,您可以尝试自行安装linux下的浏览器,当然我还是选择将BROWSER变量exportmnt下实体机的的浏览器路径
  • 如果提示无法什么DISPLAY=:0之类的,请关机并在Windows的管理员模式命令行执行wsl --update并重启,仍然不能解决请重新安装X并在Windows系统下也安装服务端(不清楚有没有用,反正我这样可以解决问题),还有更进一步的我也不懂,请自行解决,如果能够执行xdg-clock并且出现一个可爱的钟表那么你解决了这个问题
  • 如果提示无法调用,或者权限相关什么的,请在防火墙里面把所有带有wsl和Hyper-V字样的条目权限全部开放,并且以管理员模式运行wsl
  1. 保存代码,关闭vscode,cd到你code文件的目录
    如果不关闭vscode,ok的链接请求好像会被vscode代理到它自己的服务器,然后就寄了

  2. 在终端输入python3 ok -submit,成功提交

  • 如果显示下图请检查vscode是否关闭 image
  • 如果显示下图请检查步骤1 MXPNAISVL0XW0VY__BH4__K
  • 如果出现下图1或者卡在下图2请按Ctrl+C取消命令执行并检查步骤2和你的用户组 image image
  • 如果你还有别的情况果然还是建议自求多福或者直接把代码复制到实体机提交(
Edited by nik_nul