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

树莓派4无桌面环境下Spotipy API无法验证Spotify凭据

解决无桌面Raspbian树莓派上Spotipy授权失败(code must be supplied)的问题

问题根源

无桌面环境下,Spotify OAuth网页授权流程无法自动完成(无浏览器打开),且未手动传入授权code,导致报错。Windows上因安装了Spotify应用,采用了应用内授权的方式,无需网页跳转,所以正常运行。

解决步骤

1. 确认Redirect URI配置一致性

  • 确保Spotify开发者后台中,你的应用已添加与环境变量SPOTIPY_REDIRECT_URI完全一致的URI(建议使用http://localhost:8888/callback,这是Spotipy的默认推荐值)
  • 在树莓派终端验证环境变量是否正确加载:
    echo $SPOTIPY_CLIENT_ID
    echo $SPOTIPY_CLIENT_SECRET
    echo $SPOTIPY_REDIRECT_URI
    

2. 修改授权代码,支持手动输入授权code

修改你的授权函数,添加手动获取授权code的逻辑,让脚本引导你完成授权流程:

import spotipy
from spotipy.oauth2 import SpotifyOAuth

def authorize():
    scope = 'playlist-modify-public'
    username = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
    sp_oauth = SpotifyOAuth(scope=scope, username=username, open_browser=False)
    
    # 优先使用缓存的token(避免重复授权)
    token_info = sp_oauth.get_cached_token()
    if not token_info:
        # 生成授权URL
        auth_url = sp_oauth.get_authorize_url()
        print(f"请在任意有浏览器的设备(如你的Windows电脑)中打开以下URL并完成登录授权:")
        print(auth_url)
        # 提示输入授权后回调URL中的code参数
        response_code = input("\n请复制授权后URL中'code='后面的字符串并输入:")
        # 通过code获取token
        token_info = sp_oauth.get_access_token(response_code)
    
    return sp_oauth

spotifyObject = spotipy.Spotify(auth_manager=authorize())

3. 执行授权流程

  1. 在树莓派终端运行修改后的脚本
  2. 复制输出的授权URL,在Windows电脑的浏览器中打开,登录你的Spotify账号并授权
  3. 授权成功后,浏览器会跳转到你设置的Redirect URI(即使localhost无法访问也没关系),复制URL中code=后面的所有字符(注意不要包含后续的&state=等参数)
  4. 将复制的code粘贴到树莓派终端的输入框中,回车确认

关键说明

  • 第一次授权后,Spotipy会在本地生成缓存文件(.cache-<username>),后续运行脚本会自动读取缓存的token,无需重复授权
  • 若后续出现token过期问题,脚本会自动触发刷新流程,无需手动干预

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:53:09