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

Abierto
#1,285 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@mvanhorn ya está trabajando en esto.

Desde el 28/10/2026.

  • #1286 de @mvanhorn — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
github, rust, tauri, typescript

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
Rust
Estrellas
3.7k
Forks
349
Merge medio
2 d 14 h
PR fusionados (30 d)
97

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Open-Less/openless

Todos los issues de Open-Less/openless

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.