Spotube 中文文档 下载 App

Spotube 连接 Spotify——导入播放列表与同步收藏

Spotube 与 Spotify 的关系

Spotube 不是 Spotify 的客户端(不能播放 Spotify Premium 曲目),但它可以用 Spotify 的元数据 API——不登录也能搜索,登录后能导入个人播放列表和收藏。这是 Spotube 最受欢迎的使用方式:"用 Spotify 元数据 + YouTube 音频流"。

OAuth 授权流程

Spotube 通过 Spotify Metadata 插件走标准的 Spotify Web API OAuth 流程:

  1. Spotube 内置了一个 Spotify Developer Dashboard 注册的应用(Client ID + Secret)
  2. 插件页面点 "Connect Spotify →"
  3. Spotube 弹出系统浏览器 → 跳转到 Spotify 登录页
  4. 输入 Spotify 账号密码 → 授权
  5. Spotify 回调带临时 auth code 到 Spotube 的 redirect URL
  6. 插件拿到 code → 调 Spotify API 换 access token + refresh token
  7. Token 用 flutter_secure_storage 加密存储在本地(iOS 用 Keychain、Android 用 KeyStore、桌面用 DPAPI / Keychain)

Token 有效期约 1 小时,Spotube 自动用 refresh token 续期——用户不需要重新登录。

自动导入什么

Spotube 在登录成功后自动导入:

导入内容数量上限来源 API
个人播放列表(自己创建的)全部(Spotify API 上限 50/请求,Spotube 自动翻页)GET /me/playlists
关注的播放列表全部同上
收藏曲目(Liked Songs)全部GET /me/tracks
收藏专辑全部GET /me/albums
关注的艺人全部GET /me/following?type=artist

Spotube 创建本地副本,存在 Drift(reactive SQLite)数据库里。

实时同步

Spotube 不做实时同步(Spotify 没有 webhook 推送新播放列表变化)。Spotube 的同步策略是:

⚠️ Spotube 没有双向同步——你在 Spotube 里新建或修改播放列表,不会推送到 Spotify。这是 Spotify Web API 的限制(Spotube 无法替你写回 Spotify)。

用 Spotify 元数据但不登录

Spotify Metadata 插件支持匿名使用:

多个 Spotify 账号

Spotube 支持同时连接多个 Spotify 账号(少见需求,但有人用)。每个账号的 token 独立存储、独立显示在 Spotube 里,搜索时所有已连接账号的权限合并。

退出 / 撤销连接

  1. Spotube 设置 → Spotify Metadata → "Disconnect"
  2. Spotube 删除本地 token、删除从该账号导入的所有播放列表
  3. 建议同时到 Spotify 网页端 "Account → Apps" 手动撤销 Spotube 的授权

常见问题

登录后发现播放列表没完全导入

Spotify Web API 的 /me/playlists 默认返回 50 条。Spotube 会自动翻页,但如果你的网络较慢,可能需要多等一会或手动点 "Sync now"。

Spotify token 过期导致搜索失败

Spotube 有自动 refresh 机制,但 refresh token 本身也会过期(通常半年到一年)。过期后需要重新走 OAuth 流程。Spotube 会在失败时自动弹出重新登录提示。

发现同名曲目在不同播放列表里都有重复条目

Spotube 不做跨播放列表去重——Spotify API 返回的每个列表里的曲目都是独立对象,Spotube 原样导入。这是 Spotube 目前的行为,可能在未来版本改进。