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

无桌面树莓派2W运行Spotipy遭遇SpotifyOauthError问题求助

问题原因及解决方法

原因分析

  1. 重定向URI不匹配:Spotify OAuth要求开发者后台配置的重定向URI必须和脚本中使用的完全一致。电脑上运行脚本时默认使用http://localhost:8888/callback,但如果你的Spotify应用后台未添加该URI,或树莓派脚本未显式指定,就会触发"Invalid redirect URI"错误。
  2. 授权上下文不一致:电脑上生成的授权码与当前OAuth实例参数绑定,若树莓派上的SpotifyOAuth实例参数(尤其是redirect_uri)和电脑不一致,使用同一授权码会被判定为无效授权(invalid_grant)。
  3. 缓存文件问题:电脑运行后生成的.cache-<用户名>缓存文件,若直接拷贝到树莓派,可能存在路径权限问题,或缓存内的重定向URI信息与树莓派环境不匹配,导致token验证失败。

解决方法

1. 统一重定向URI配置

  • 登录Spotify开发者控制台,找到你的应用,在Redirect URIs列表中添加http://localhost:8888/callback并保存。
  • 在脚本中显式指定redirect_uri参数,确保电脑和树莓派脚本配置一致:
    spotify_user = os.environ.get("SPOTIPY_CLIENT_USERNAME")
    spotify_scope = "playlist-modify-private,user-read-currently-playing,user-modify-playback-state,user-read-playback-state"
    oauth = SpotifyOAuth(
        username=spotify_user,
        scope=spotify_scope,
        open_browser=False,
        redirect_uri="http://localhost:8888/callback"  # 显式指定统一重定向URI
    )
    user_token = oauth.get_access_token(as_dict=False)
    spotify = spotipy.Spotify(auth=user_token)
    

2. 正确传递授权URI

  • 在电脑上运行脚本,当控制台提示输入授权URI时,复制完整的回调URI(格式类似http://localhost:8888/callback?code=xxxxxx)。
  • 在树莓派上运行脚本,出现输入授权URI的提示时,粘贴刚才复制的完整URI,确保code参数无遗漏或错误。

3. 处理缓存文件(可选,实现免重复授权)

  • 将电脑脚本运行目录生成的.cache-<你的用户名>文件拷贝到树莓派脚本运行目录,确保树莓派运行用户拥有该文件的读取权限。
  • 或手动在树莓派创建该缓存文件,复制电脑缓存中的access_token、refresh_token、expires_at等字段内容,保持JSON格式正确。

4. 核对环境变量

  • 确认树莓派上的SPOTIPY_CLIENT_ID、SPOTIPY_CLIENT_SECRET、SPOTIPY_CLIENT_USERNAME环境变量和电脑上完全一致,无拼写错误或遗漏。

内容的提问来源于stack exchange,提问作者Kaloschke

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:52:31