我创建了一个小应用程序。它的一部分显示用户的播放列表供他们选择。首先,我遇到了用户再次登录的问题,因为我的git存储库中有一个缓存文件夹,它正在推送旧令牌。我删除了那个缓存文件沿着pycache文件夹。从那时起,当用户被带到页面选择他们的播放列表时,它显示的是我个人的Spotify播放列表,而不是他们的!我不知道发生了什么!我没有改变www.example.com文件中的任何代码app.py。大约一个小时前,当一个用户第一次登录时,它显示的是他们的播放列表。直到我删除了该高速缓存文件。关于可能是什么问题的任何线索?
下面是相关页面的代码。/toptracks是重定向到/selectedplaylist页面的重定向URI。这是登录用户的播放列表列表应该显示为列表的地方。相反,我的播放列表正在显示...
app= Flask(__name__, template_folder='templates')
app.secret_key= appKey
app.config['SESSION_COOKIE_NAME']= 'A Cookie'
TOKEN_INFO= 'token_info'
def create_spotify_oauth():
return SpotifyOAuth(
client_id= SPOTIPY_CLIENT_ID,
client_secret= SPOTIPY_CLIENT_SECRET,
redirect_uri='https://myurl.com/toptracks',
scope= 'user-top-read'
)
@app.route("/")
def index():
sp_oauth= create_spotify_oauth()
auth_url= sp_oauth.get_authorize_url()
return render_template('index.html', auth_url=auth_url)
@app.route('/toptracks')
def redirector():
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('/selectplaylist')
@app.route('/selectplaylist')
def selectPlaylist():
try:
token_info= get_token()
except:
print('try logging in again')
redirect('/')
sp= spotipy.Spotify(auth=token_info['access_token'])
user= sp.current_user()['id']
allPlaylists= sp.user_playlists(user=user,limit=50)['items']
playName= [[i.get('name'),i.get('id')] for i in allPlaylists]
playId= [i.get('id') for i in allPlaylists]
return render_template('selectPlaylist.html',playName=playName,playId=playId)
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
字符串
我试图删除一些其他的缓存文件,但这并没有解决任何问题。我不知道我还可以尝试什么,因为代码本身似乎很好。我对我可以尝试的事情感到困惑,因为它在几个小时前工作得很好。
1条答案
按热度按时间hgb9j2n61#
对我来说,这个问题是由Spotify在我的系统中自动创建一个.cache文件引起的。我在我的模块中应用了这个cleanup()函数,每当提取Spotify用户数据时,它就修复了一切:
字符串