Spotipy 异常引发状态 403;原因:none

Spotipy exception raised status 403; reason: none

我第一次尝试学习如何与 API 一起工作,我开始学习 spotipy。我正在关注此任务的 tutorial here。我按照教程进行操作,直到他打电话给 current_user_saved_tracks(limit=50, offset=0) 并且一切正常。 但是,当我尝试将其切换到另一个调用 current_user_top_tracks(limit=20, offset=0, time_range='medium_term') 时,它会抛出一个错误:

spotipy.exceptions.SpotifyException: http status: 403, code:-1 - https://api.spotify.com/v1/me/top/tracks?time_range=medium_term&limit=20&offset=0:
error, reason: None

我指的是 spotipy docs 这些电话。 这是我到目前为止的代码。作为参考,该调用是在第 40 行的函数 getTracks 中进行的:

import time
from flask import Flask, request, url_for, redirect, session
import spotipy
from spotipy.oauth2 import SpotifyOAuth
from git_ignore.config import *

app = Flask(__name__)

TOKEN_INFO = "token_info"


@app.route('/')
def login():
    sp_oauth = create_spotify_ouath()
    auth_url = sp_oauth.get_authorize_url()
    return redirect(auth_url)


@app.route('/redirect')
def redirectPage():
    sp_oauth = create_spotify_ouath()
    session.clear()
    code = request.args.get('code')
    token_info = sp_oauth.get_access_token(code)
    session[TOKEN_INFO] = token_info
    return redirect(url_for('getTracks', _external=True))


@app.route('/getTracks')
def getTracks():
    try:
        token_info = get_token()
    except:
        print("user not logged in")
        return redirect('/')
    sp = spotipy.Spotify(auth=token_info['access_token'])
    return sp.current_user_top_tracks(time_range='medium_term', limit=20, offset=0)
    # return sp.current_user_saved_tracks(limit=20, offset=0)
    # The commented line above seems to work but the one with top_tracks throws an error.



def get_token():
    token_info = session.get(TOKEN_INFO, None)
    if not token_info:
        raise "exception"
    now = int(time.time())
    is_expired = token_info['expires_at'] - now < 60
    if (is_expired):
        sp_oauth = create_spotify_ouath()
        token_info = sp_oauth.refresh_access_token(token_info['refresh_token'])
    return token_info


def create_spotify_ouath():
    return SpotifyOAuth(
        client_id=client_id,
        client_secret=client_secret,
        # Where to come back to
        redirect_uri=url_for('redirectPage', _external=True),
        scope="user-library-read")


if __name__ == "__main__":
    app.run(debug=True)

更新:所以我从这个问题中休息了几个小时,然后回来调试它。我去了 Spotify 仪表板 - 删除了我的应用程序并创建了一个新应用程序。然后,我再次替换了我的 Client ID 和 Client Secret 以及 运行 文件。它现在似乎工作!不确定问题到底是什么(可能是错误?)但创建新应用并替换您的凭据有效!

我收到 403:用户未在开发者仪表板中注册某些调用(获取用户的个人资料和设备),但未注册其他调用(与播放相关的调用)。

在开发者面板上创建一个新应用也为我解决了这个问题。