使用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()
关键说明:
- 权限必须在认证阶段就声明,后续无法通过局部变量补充
- 删除旧缓存文件是为了让Spotipy重新请求包含新权限的授权,否则会沿用之前无权限的认证信息
user-modify-playback-state权限已经包含调节音量、播放/暂停、切换曲目的所有操作权限
内容的提问来源于stack exchange,提问作者Tatshino
相关产品推荐
相关产品推荐

