Spotify API的访问令牌对每个用户都是相同的



因此,在测试期间,我能够在登录页面上使用1个spotify帐户登录,并收到正确的访问代码和令牌。然而,当我运行并关闭该应用程序,然后再次运行时,我进入了一个匿名标签(没有cookie(,并能够通过同一登录页面成功登录到一个新的Spotify帐户(它会让你通过Spotify进行身份验证(。但是,出于某种原因,spotifyAPI向我发送了与第一个用户相同的访问代码和令牌。

谢谢你的帮助!

import spotipy
from spotipy.oauth2 import SpotifyOAuth
from flask import Flask, request, url_for, session, redirect, render_template
import time
from os import urandom
# App Initialization
app = Flask(__name__)
# Setup Cookies
app.secret_key = urandom(64)
app.config['SESSION_COOKIE_NAME'] = 'A Session Cookie'
TOKEN_INFO = "token_info"
@app.route('/login')
def login():
sp_oauth = create_spotify_oauth()
auth_url = sp_oauth.get_authorize_url()
return redirect(auth_url)
@app.route('/redirect')
def redirectPage():
sp_oauth = create_spotify_oauth()
session.clear()
code = request.args.get('code')
token_info = sp_oauth.get_access_token(code)
# print(token_info)
session[TOKEN_INFO] = token_info
return redirect(url_for('profile', _external=True))
# Universal Functions
def create_spotify_oauth():
return SpotifyOAuth(
client_id = 'INSERT CLIENT ID',
client_secret = 'INSERT CLIENT SECRET',
redirect_uri=url_for('redirectPage', _external=True),
scope='user-library-read user-read-recently-played user-read-playback-position playlist-read-collaborative user-read-playback-state user-top-read playlist-modify-public user-read-currently-playing user-library-read playlist-read-private playlist-modify-private',
)
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_oauth()
token_info = sp_oauth.refresh_access_token(token_info['refresh_token'])
return token_info
app.run()

本质上,函数"get_access_token(("如果它可以通过环境变量在您的系统中找到任何访问令牌,则返回一个访问令牌,所以这对我的应用程序来说甚至不是问题。它正在按预期工作。

最新更新