手机号与微信登录(国内学习平台)
给谁看:学习平台的使用者(第一部分)和管理员 Eddie(第二部分)。依据:《实施细则 · 第 108 轮》。美国站不变,仍用邮箱登录。
一、使用者
手机号登录 1. 打开学习平台登录页,默认是“手机验证码登录”。 2. 填 11 位手机号,点“获取验证码”,把收到的 6 位数字填进去,点“登录”。 3. 验证码 5 分钟有效;同一手机号 60 秒只能发一条、一天最多 10 条;填错 5 次这条验证码作废,重新获取即可。
密码登录:切到“密码登录”,账号一栏填手机号、邮箱或用户名都可以。
忘记密码:登录页“忘记密码?”→“发到手机”→ 收验证码、设新密码(至少 8 位,字母和数字都要有),设好直接登录。
手机号注册(开放后才看到):登录页下面“手机号注册”→ 填姓名、手机号、验证码,勾选同意用户协议和隐私政策。注册后是学生:可以选课、学习、做实验、用 AI 助教。想自己建课,登录后在账号菜单“申请成为老师”里提交,审核通过后就能建课。学校、企业整体开通,请到官网预约演示。
微信扫码登录(电脑网页) 1. 登录页点“微信扫码登录”,用手机微信扫码确认。 2. 初次扫码:页面让你验证手机号(收验证码),验证后微信就绑到你的账号上,以后扫码直接进。 3. 登录以后也可以在左上角头像菜单里“绑定微信 / 解绑微信”。 4. 没有开通账号的人扫码后也要先验证手机号;手机号没有账号会提示“请联系单位管理员开通”(或先注册)。
二、管理员
给单位的人开账号(体验单位页):姓名、手机必填,邮箱选填。不填邮箱的,本人用手机号登录(收验证码,或用手机号 + 显示的初始密码)。一个手机号只能对应一个账号。初始密码只显示一次,用微信发给本人。第 108 轮之前开的账号,登记过手机号的,自动可以用手机号登录。
管理员自己不能用验证码登录:管理员账号只认密码(防止手机号被冒用就拿到管理权限)。忘了密码,在服务器上(阿里云 Workbench 远程连接)cd /opt/wenquest 后执行(把 新密码 换成自己的,保留两边的单引号,密码里不要有 ' 和 $):
docker compose -f docker-compose.yml -f docker-compose.prod.yml exec moodle su -s /bin/sh www-data -c "php admin/cli/reset_password.php --username=admin --password='新密码' --ignore-password-policy"
.env 里的 MOODLE_ADMIN_PASSWORD 只在初次安装时用,改了密码不用跟着改。
开通短信(阿里云短信服务,第 108 轮细则第二节有申请步骤):签名、模板审核通过后,服务器 /opt/wenquest/.env 填(已有同名行就改那一行):
WQ_SMS_ACCESS_KEY_ID=…
WQ_SMS_ACCESS_KEY_SECRET=…
WQ_SMS_SIGN=问渠科技
WQ_SMS_TEMPLATE=SMS_xxxxxxxxx
然后 docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --force-recreate gateway。填好之前:登录页不显示“手机验证码登录”,也不开放手机号注册(D-8);体验单位照常开账号,账号可以用手机号 + 密码登录。
开通微信扫码(微信开放平台“网站应用”,授权回调域 learn.wenquestech.online):审核通过后 .env 填 WQ_WECHAT_WEB_APPID、WQ_WECHAT_WEB_SECRET,同样重建网关。填好之前登录页不显示微信按钮。
关掉公众注册:.env 加 WQ_PUBLIC_SIGNUP_CN=0,重建网关。
三、背后怎么转的
- 账号仍在 Moodle 里。没有邮箱的账号,Moodle 里的登录名是内部标识
<手机号>@m.wenquestech.online,系统不往这个地址发任何邮件;界面上显示手机号。 - 手机号、微信标识和账号的对应关系存在网关数据目录的
logins.db。验证码只存哈希。 - 验证通过后,网关向 Moodle 的问渠插件要一个登录令牌(
local_wenquest_account_signin_token,只有网关的服务账号能调用,管理员账号一律拒绝)。 - 微信只取 OpenID / UnionID,不取昵称头像;扫码的 state 一次有效、10 分钟过期。