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

使用Spotipy调节Spotify音量时遭遇401权限缺失错误求助

解决Spotipy调节音量时的401权限缺失错误

你的错误核心问题是Spotify客户端初始化时未传入正确的权限范围(scope),后续函数内部定义的scope变量完全无效——Spotipy的OAuth权限是在认证阶段就确定的,运行时修改局部变量不会改变已认证客户端的权限。

修复步骤:

  • 合并所有需要的权限到初始化SpotifyOAuth时的scope参数中
  • 删除函数内部冗余的scope定义
  • 删除旧的认证缓存文件(默认是项目根目录下的.cache文件),确保新权限生效

需要的权限范围:

  • user-modify-playback-state:用于控制播放、切换曲目、调节音量
  • user-read-currently-playing:用于获取当前播放信息

修改后的完整代码:

import spotipy
from spotipy.oauth2 import SpotifyOAuth
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from json_handler import *

username = spotifyUsername
playback = ""

# 初始化时传入所有需要的权限
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=spotifyClientID,
                                              client_secret=spotifyClientSecret,
                                              redirect_uri="http://google.com/",
                                              scope="user-modify-playback-state user-read-currently-playing"))

def getCurrentPlay():
    playback = sp.currently_playing(market="ZA")
    print(playback)

def nextTrack():
    sp.next_track()

def prevTrack():
    sp.previous_track()

def Pause():
    sp.pause_playback()

def Play():
    sp.start_playback()

def SetVolume():
    volume_percent = 10
    sp.volume(volume_percent, device_id=None)

SetVolume()
#getCurrentPlay()

关键说明:

  1. 权限必须在认证阶段就声明,后续无法通过局部变量补充
  2. 删除旧缓存文件是为了让Spotipy重新请求包含新权限的授权,否则会沿用之前无权限的认证信息
  3. user-modify-playback-state权限已经包含调节音量、播放/暂停、切换曲目的所有操作权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:00:57