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

Aberta
#1,285 4 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

@mvanhorn já está trabalhando nisso.

Desde 28/10/2026.

  • #1286 de @mvanhorn — aberto

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
25/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Estagnada
Stack de tecnologia
github, rust, tauri, typescript

Direção de pesquisa

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.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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 条件冲突,尚未独立复现“隔天”必然触发凭据失效。

Linguagem predominante
Rust
Estrelas
3.7k
Forks
349
Merge médio
2d 14h
PRs com merge (30d)
97

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Open-Less/openless

Todas as issues de Open-Less/openless

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.