You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotify API如何为自有账号实现程序永久授权

Spotify桌面应用自动永久鉴权实现方案

核心逻辑分两部分:一是通过本地环回地址监听回调,省去手动粘贴回调链接的步骤;二是持久化存储refresh_token,自动过期刷新,实现一次授权永久有效。

前置配置

提前在你创建的Spotify应用设置里,把http://localhost:8888/callback添加到允许的重定向URI列表中,地址必须完全匹配,否则会报回调地址不合法错误。

实现要点

  • 放弃公网回调地址,改用本地环回地址作为回调,程序内置临时HTTP服务监听端口,自动捕获授权码,无需用户手动复制粘贴跳转后的链接
  • 不要把token缓存放在exe同级的安装目录,要存在系统分配的用户专属应用数据目录,避免Windows下Program Files目录无写入权限导致缓存失败
  • 依赖Spotipy原生的token自动刷新逻辑,只要缓存中保存的refresh_token没有被用户主动撤销,access token过期后会自动换新,不需要重复走授权流程
  • 开启自动唤起系统默认浏览器的配置,用户第一次授权只需要点一下同意即可,后续启动完全无感知

参考实现代码

import os
import sys
import spotipy
from spotipy.oauth2 import SpotifyOAuth


def get_spotify_token_cache_path():
    # 跨平台生成用户级配置目录,避免权限问题
    if os.name == "nt":
        # Windows系统
        base_path = os.getenv("APPDATA")
        app_dir = os.path.join(base_path, "SpotifyPlaylistTool")
    elif sys.platform == "darwin":
        # macOS系统
        base_path = os.path.expanduser("~/Library/Application Support")
        app_dir = os.path.join(base_path, "SpotifyPlaylistTool")
    else:
        # Linux系统
        base_path = os.path.expanduser("~/.config")
        app_dir = os.path.join(base_path, "SpotifyPlaylistTool")
    # 目录不存在则自动创建
    os.makedirs(app_dir, exist_ok=True)
    return os.path.join(app_dir, "auth_token.cache")


# 按需替换成你自己应用的client_id和client_secret
CLIENT_ID = "你的应用client_id"
CLIENT_SECRET = "你的应用client_secret"
AUTH_SCOPE = "playlist-modify-public playlist-read-private playlist-modify-private"
REDIRECT_URI = "http://localhost:8888/callback"

sp = spotipy.Spotify(
    auth_manager=SpotifyOAuth(
        client_id=CLIENT_ID,
        client_secret=CLIENT_SECRET,
        redirect_uri=REDIRECT_URI,
        scope=AUTH_SCOPE,
        open_browser=True,
        cache_path=get_spotify_token_cache_path()
    )
)

# 首次运行执行任意接口调用就会自动触发鉴权流程
# current_user = sp.current_user()
# print(current_user["display_name"])

补充说明

如果你选的8888端口被本机其他程序占用,可以换成任意1024以上的未占用端口,只要同步修改Spotify开发者后台的重定向地址即可。
第一次启动程序会自动唤起系统默认浏览器跳转到Spotify授权页,用户点击同意后页面会自动跳转到本地回调地址,程序会自动完成后续token获取,不需要用户做任何复制粘贴操作。
只要用户不在Spotify账号的第三方应用授权列表里移除你的应用,本地缓存的refresh_token就一直有效,程序启动时会自动读取缓存、刷新过期的access token,全程无感知,打包成exe后也不会出现鉴权错误。

内容的提问来源于stack exchange,提问作者add-itya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:45:38