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

使用Python+Flask调用Spotify API时遇无效重定向URI错误求助

Spotify API Invalid Redirect URI 问题排查与解决

问题概述

使用Python + Flask开发应用时,调用Spotify API触发invalid redirect URI错误,已在Spotify开发者后台添加重定向URI并保存,但问题仍未解决,预期正常弹出Spotify OAuth授权窗口。

错误截图:Spotify无效重定向URI错误提示
已配置的重定向URI截图:已添加的重定向URI列表
预期效果示例:Spotify OAuth授权窗口示例

代码片段

from flask import Flask, request, url_for, session, redirect
import spotipy
from spotipy.oauth2 import SpotifyOAuth


app = Flask(__name__)

app.secret_key = ""
app.config['SESSION_COOKIE_NAME'] = 'Spotify cookie'

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

@app.route('/redirect')
def redirectPage():
    return 'redirect'

@app.route('/getTracks')
def getTracks():
    return 'PAIN'


def create_spotify_oauth():
    return SpotifyOAuth(
        client_id="",
        client_secret="",
        redirect_uri=url_for('redirectPage', _external=True),
        scope="user-library-read")

排查与解决步骤

1. 验证生成的重定向URI与后台配置完全一致

url_for('redirectPage', _external=True)会根据Flask运行环境动态生成URI,可能和后台配置存在差异。可以在login路由中打印授权URL,检查其中的redirect_uri参数:

@app.route('/')
def login():
    sp_oauth = create_spotify_oauth()
    auth_url = sp_oauth.get_authorize_url()
    print(auth_url)  # 打印后查看redirect_uri参数
    return redirect(auth_url)

确保打印出的redirect_uri和Spotify后台添加的URI完全匹配(包括协议http/https、端口号、路径,不能有多余的斜杠或拼写错误)。

2. 统一本地服务地址

  • 如果本地用flask run默认启动地址是http://localhost:5000,后台必须配置对应的http://localhost:5000/redirect;如果修改了端口(比如flask run --port=8080),后台URI也要同步更新。
  • 不要混用localhost和127.0.0.1,两者在Spotify后台属于不同的URI,必须保持一致。

3. 确认后台配置生效

  • 后台保存URI后可能需要等待1-2分钟才会生效,不要立即测试。
  • 刷新Spotify开发者后台页面,确认重定向URI确实存在于列表中,且格式完全正确(无多余空格、斜杠)。

4. 硬编码重定向URI测试

暂时替换动态生成的URI为硬编码字符串,排除url_for的潜在问题:

def create_spotify_oauth():
    return SpotifyOAuth(
        client_id="你的Client ID",
        client_secret="你的Client Secret",
        redirect_uri="http://localhost:5000/redirect",  # 与后台配置完全一致
        scope="user-library-read")

测试如果正常,再排查url_for的配置问题。

5. 检查Flask的SERVER_NAME配置

如果你的Flask应用设置了app.config['SERVER_NAME'],会影响url_for生成的外部URL,确保该配置和后台重定向URI的域名/端口匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:01:10