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

Spotify授权报错invalid_client:Python转存喜欢歌曲至播放列表故障求助

Spotify API 授权错误(invalid_client)排查与解决

问题背景

原本运行正常的Python程序,功能是将Spotify账号中所有喜欢的歌曲转移到指定播放列表,现在触发invalid_client授权错误,尝试新建Spotify应用后问题仍未解决。

程序代码

import spotipy
from spotipy.oauth2 import SpotifyOAuth
from app import app


def transfer_tracks(destination_playlist_uri):

    sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id='id',
                                                    client_secret='secret',
                                                    redirect_uri='redirect_uri',
                                                    scope='user-library-read playlist-modify-public'))
    

    # Retrieve the total count of liked tracks
    
    saved_tracks = sp.current_user_saved_tracks(limit=1)
    total_tracks = saved_tracks['total']

    # Set the batch size for pagination
    batch_size = 20
    offset = 0

    while offset < total_tracks:
        results = sp.current_user_saved_tracks(limit=batch_size, offset=offset)
        track_uris = [item['track']['uri'] for item in results['items']]

        # Add the track URIs to the destination playlist
        destination_playlist_id = destination_playlist_uri.split('/')[-1]
        sp.playlist_add_items(destination_playlist_id, track_uris)

        offset += batch_size

    print("All tracks transferred to the destination playlist!")


# Set the URIs for the destination playlist
destination_playlist_uri = 'https://open.spotify.com/playlist/playlist-id'

# Call the transfer_tracks function
transfer_tracks(destination_playlist_uri)

# Run the Flask server
if __name__ == '__main__':
    app.run(port=8080)

错误信息

raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://accounts.spotify.com/api/token

在处理上述异常期间,又触发了另一个异常:
raise SpotifyOauthError(
spotipy.oauth2.SpotifyOauthError: error: invalid_client, error_description: Invalid client

排查与解决步骤

  • 核对Client ID和Client Secret:
    确保代码中client_id和client_secret替换为Spotify Dashboard对应应用的真实值,无多余空格、引号或字符遗漏,复制时需完整选取。

  • 匹配Redirect URI:
    代码中的redirect_uri必须与Spotify Dashboard应用设置里的「Redirect URIs」完全一致,包括协议(http/https)、域名、端口和路径,比如本地开发常用http://localhost:8080/callback,需在Dashboard中精确添加。

  • 确认应用状态与权限:
    在Spotify Dashboard中,将应用状态设置为「已发布」(测试应用也需此操作),同时检查权限范围是否包含user-library-read和playlist-modify-public,若操作私有播放列表需额外添加playlist-modify-private。

  • 清理授权缓存:
    删除Spotipy生成的本地缓存文件(通常为项目目录下的.cache文件),清除旧的无效授权数据后重新运行程序,触发新的授权流程。

  • 改用环境变量管理敏感信息:
    避免硬编码敏感信息,通过环境变量传递参数,示例代码:

    import os
    sp = spotipy.Spotify(auth_manager=SpotifyOAuth(
        client_id=os.getenv('SPOTIFY_CLIENT_ID'),
        client_secret=os.getenv('SPOTIFY_CLIENT_SECRET'),
        redirect_uri=os.getenv('SPOTIFY_REDIRECT_URI'),
        scope='user-library-read playlist-modify-public'
    ))
    

    在系统或项目环境中设置对应变量,减少复制错误概率。

  • 验证授权流程:
    运行程序后,确认能正常跳转至Spotify授权页面,登录后回调至设置的Redirect URI,本地开发需确保Flask服务在指定端口正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:03:29