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

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'])刷新令牌,无需用户重复授权

使用前准备

  1. 在Spotify开发者平台创建应用,获取专属CLIENT_ID
  2. 在应用设置页面添加你的REDIRECT_URI(示例用http://localhost:8080)
  3. 安装依赖:pip install spotipy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:57:32