Super Productivity OneDrive 同步要求自建 Microsoft Entra 应用注册,怎么创建?
【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity
Super Productivity 的 OneDrive 同步没有内置的 OneDrive client ID,应用分发时不带现成的客户端凭据,因此表单里的Use my own app registration选项始终开启——要启用 OneDrive 同步,你必须先在 Microsoft Entra(Azure AD)里创建一个属于你自己的应用注册(app registration),再把它填回 Super Productivity 的同步设置。这条路径只在桌面版(Electron)和Android上可用,Web 版不提供 OneDrive 同步。
按下面的步骤走完后,你会得到一个配置为 public client 的 Entra 应用注册,能在应用里通过Application (Client) ID完成登录,并把同步文件存到 OneDrive 的 App Folder 中。
准备条件
- 桌面版(Electron)或 Android 版 Super Productivity(Web 版不支持 OneDrive)。
- 一个可以管理 Entra 应用注册的 Microsoft 账号(文档中的入口是 Microsoft Entra admin center,在App registrations→New registration里创建)。
- 打开应用中的同步表单:进入Settings(齿轮图标)→Sync & Backup标签 →Sync区域,打开Enable syncing并把Sync provider选为 OneDrive,表单会显示出需要填写的字段。
第一步:在 Entra 中创建应用注册
在 Microsoft Entra admin center 的App registrations中选择New registration,创建一个注册。关键点是要把它配置成public client,后续两节的设置都围绕这一点展开。
第二步:添加正确的重定向 URI
进入该注册的Authentication→Add a platform→Mobile and desktop applications,在这个平台下添加重定向 URI:
- 桌面(Electron):
superproductivity://oauth-callback/onedrive - Android / 手动回退:
https://login.microsoftonline.com/common/oauth2/nativeclient
文档明确警告:不要把这两个 URI 注册到Web或Single-page application (SPA)平台下。如果注册在 Web/SPA 平台,token 兑换会失败并返回HTTP 400(例如AADSTS9002327)。
第三步:允许 public client 流程
仍在Authentication页面,把Allow public client flows设为Yes。
Super Productivity 使用 PKCE 认证,不发送 client secret。如果这项保持No,登录看似成功,但换取 token 的环节会失败,报HTTP 400 Bad Request,错误码形如AADSTS7000218: ... 'client_assertion' or 'client_secret'。
第四步:添加 API 权限
在API permissions下添加 Microsoft Graph 的delegated(委托)权限:
Files.ReadWrite.AppFolderoffline_access
第五步:把应用注册填回 Super Productivity
回到应用的同步表单,逐项填写:
- Application (Client) ID:必填,填应用注册里的Application (client) ID。
- Tenant ID:个人账号或多租户登录填
common,也可以填你具体的租户 ID。 - Sync Folder Path:同步文件存放在 OneDrive 的App Folder内(例如
Super Productivity),不在 OneDrive 根目录。 - Authenticate:通过应用给出的链接登录。桌面版会自动捕获重定向;Android / 手动回退方式需要把授权码(authorization code)复制回应用。
文件类同步提供方通用的Sync interval、Only sync manually以及Advanced下的Encryption(客户端加密,密钥不会发送到提供方,且需要在每台设备上设置相同的 key)对 OneDrive 同样适用。首次启用文件类提供方时,设置过程中会提示是否设置加密密码,这一步是可选的,可以跳过之后再从同步设置中启用。
验证与故障判断
判断同步是否工作:
- 自动同步会在设定的间隔运行,也可以在界面上手动触发一次同步,然后在同步状态或通知中查看是否成功。
- OneDrive 端:确认 App Folder 里出现了同步文件并在同步后有更新。
如果登录看似成功、随后报HTTP 400 Bad Request,文档给出的判断是:这是“注册不是 public client”的典型特征。按顺序确认两点:
- Allow public client flows是否为Yes;
- 重定向 URI 是否注册在Mobile and desktop applications平台下,而不是 Web/SPA 平台。
应用会在错误信息里带出底层的AADSTSxxxxx错误码,可据此定位原因;上面提到的AADSTS9002327(平台注册错误)和AADSTS7000218(未允许 public client flows)就是两类最常见的情况。
限制
- OneDrive 同步不可用于 Web 版。
- 开启/关闭加密会替换远端数据并影响所有设备;各设备必须在下一次同步前设置相同的密钥。
- 更多同步提供方对比与数据位置说明,见 3.08-Sync-Integration-Comparison、1.02-Configure-Data-Synchronization;OneDrive 之外的提供方字段说明见 2.09-Configure-Sync-Backend。
【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考