Spotipy PKCE认证流程求助:求无Client Secret认证示例代码
Spotipy PKCE 认证完整示例代码
以下是无需client_secret、基于PKCE机制的Spotipy完整授权流程示例:
import spotipy from spotipy.oauth2 import SpotifyPKCE import uuid # 替换为你的应用配置 CLIENT_ID = "你的Spotify客户端ID" REDIRECT_URI = "你的重定向URI(需和开发者后台配置完全一致)" SCOPE = "user-read-private user-read-email" # 按需修改权限范围 def main(): # 生成PKCE所需的随机验证字符串和状态值 code_verifier = SpotifyPKCE.generate_code_verifier(length=128) state = str(uuid.uuid4()) # 初始化PKCE认证管理器 auth_manager = SpotifyPKCE( client_id=CLIENT_ID, redirect_uri=REDIRECT_URI, scope=SCOPE, code_verifier=code_verifier, state=state ) # 生成授权URL auth_url = auth_manager.get_authorize_url() print(f"请打开下面的URL完成授权:\n{auth_url}") # 用户授权后,复制重定向URL中的code参数 code = input("粘贴授权后URL里的code值:") # 获取访问令牌 try: token_info = auth_manager.get_access_token(code) print("\n授权成功!令牌信息:") print(f"访问令牌:{token_info['access_token']}") print(f"刷新令牌:{token_info['refresh_token']}") print(f"过期时间戳:{token_info['expires_at']}") # 初始化Spotipy客户端并调用API sp = spotipy.Spotify(auth=token_info['access_token']) user_profile = sp.current_user() print("\n当前用户信息:") print(f"昵称:{user_profile['display_name']}") print(f"邮箱:{user_profile['email']}") except Exception as e: print(f"授权失败:{str(e)}") if __name__ == "__main__": main()
关键细节说明
- code verifier:由
SpotifyPKCE.generate_code_verifier()自动生成符合PKCE标准的随机字符串,长度建议设为128位提升安全性 - 重定向URI:必须与Spotify开发者后台中应用配置的URI完全匹配,否则会触发授权错误
- 权限范围(Scope):根据业务需求选择对应权限,比如需要读取用户播放列表可添加
playlist-read-private,具体可参考Spotify官方权限说明 - 令牌刷新:长期使用时,可调用
auth_manager.refresh_access_token(token_info['refresh_token'])刷新令牌,无需用户重复授权
使用前准备
- 在Spotify开发者平台创建应用,获取专属
CLIENT_ID - 在应用设置页面添加你的
REDIRECT_URI(示例用http://localhost:8080) - 安装依赖:
pip install spotipy
内容的提问来源于stack exchange,提问作者Cam
相关产品推荐
相关产品推荐

