[Bug][Windows] 新 GitHub Token 有效但同步认证返回 401,登录与退出入口同时消失

未关闭
#1,285 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@mvanhorn 已经在做这个了。

开始于 2026年10月28日。

  • #1286 来自 @mvanhorn —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
停滞
技术栈
github, rust, tauri, typescript

调研方向

Start with CloudSyncSection.tsx around the login and logout conditions, then trace how syncState=sign_in_required is produced in service.rs and how Marketplace::auth_status() determines local sign-in state. Review linked pull request #1286 and the issue’s latest investigation before changing behavior. Done means the reported state exposes a way to reauthenticate or sign out, and the listed auth and network failure cases are covered.

由索引模型根据 Issue 内容生成。

描述

2026-10-28 后续定位:新 OAuth Token 调用 GitHub /user 返回 200,但官方同步 /v1/auth/github 返回 401,直连与代理均复现。线上 /revision 为 40b519ae15ee5029578f377ff8baa8f25833e692,与同步服务连接文档 声明的“仅供指定账号联调”版本一致;该版本源码会把未进入 restricted 允许名单的有效账号也返回成同样的 401。高度怀疑账号开放范围与稳定版功能展示不一致,需维护者确认实际线上配置和拒绝分支。

详细脱敏接口结果和 requestId:排查记录。最新评论附线上提交对应源码、名单判断与建议。当前完整同步仍未修复;本地重新登录/凭据恢复不能解决服务访问资格问题。

环境与操作

Windows 桌面版 2.0.1+build.20261016,GitHub OAuth,未配置自定义同步服务器。

  1. 完成 GitHub 登录,但未完成加密云同步后续设置/绑定。
  2. 隔天打开「设置 → 权限与数据 → 加密云同步」,尝试开启同步。
  3. 页面停在「第 1 步,共 3 步:开启同步」「此设备尚未解锁」「尚未检查云端备份」,红字提示「请重新登录 GitHub」。
  4. 点击刷新无效;重新启动应用后再次尝试仍复现。
  5. 页面既没有 GitHub 登录按钮,也没有退出按钮,无法按提示重新登录。

“隔天/未完成设置”是用户操作背景,不能据此断定 Token 过期。

本机脱敏日志

[e2ee-token] prepare_enable: failed code=PermissionDenied message=sign_in_required

重启后再次操作仍记录相同错误。没有上传 Token、用户名、服务密钥或完整用户日志。

源码定位

CloudSyncSection.tsx,v2.0.1-tauri:

  • 登录按钮要求 !syncSignedIn && !authSignedIn(约 734 行)。
  • 退出按钮只在 syncSignedIn 为 true 时显示(约 744–762 行)。
  • 同步返回 sign_in_required 后,syncSignedIn=false;如果 Marketplace 因本地 Token 仍存在而保持 authSignedIn=true,两个入口会同时隐藏。刷新只是重新读取相同状态。

Marketplace::auth_status() 主要检查本地 Token 是否存在,不能证明同步认证有效。

另一个排查点:service.rs 将 sync_identity() 的错误统一映射成 sign_in_required,可能混淆网络失败与凭据失效;本次底层认证失败的具体原因尚未确认。

预期行为与回归建议

  • 同步要求重新认证时,不论本地是否残留 Token,都显示「重新登录 GitHub」。
  • 尚未完成首次同步配置时也能退出当前 GitHub 账号,不要求清空服务 Key、历史或云端备份。
  • 登录成功后清理旧错误并重新进入设置流程。
  • 覆盖 authSignedIn=true + syncState=sign_in_required、authState=expired、登录后未完成同步并重启,以及真正的网络失败。

目前已确认本机现象及 UI 条件冲突,尚未独立复现“隔天”必然触发凭据失效。

主要语言
Rust
星标
3.7k
派生
349
平均合并
2 天 14 小时
30 天内合并 PR
97

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Open-Less/openless 的其他 Issue

查看 Open-Less/openless 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。