我试图允许用户使用Spotify登录(使用Spotipy库),以提供在其帐户上创建播放列表并填充播放列表的身份验证。用户登录后,我将通过嵌入式Spotify播放器(使用新创建的播放列表的播放列表ID)显示他们刚刚在重定向模板中创建的播放列表。
我的HTML模板中有一个表单输入框,接受用户的输入(他们的Spotify用户名)。我还有一个Spotify URIs的列表,可以用来填充播放列表。
我按照Spotipy文档中关于为用户获取令牌进行身份验证的内容进行了如下操作(我已经删除了我的客户端id
import os
import spotipy
import spotipy.util as util
from json.decoder import JSONDecodeError
from datetime import date
@login_required
def save_playlist(request, data='Default_Data'):
username = data.split('/')[0] #spotify username
track_ids = data.split('/')[1:11] #list of spotify IDs for playlist tracks
client_id = '****'
client_secret = '****'
scope = 'playlist-modify-public, playlist-modify-private'
redirect_uri = 'http://127.0.0.1:8000/save_playlist/'
#check if username is already in cache, if not, create cache
try:
token = util.prompt_for_user_token(username,
scope=scope,client_id=client_id,
client_secret=client_secret,redirect_uri=redirect_uri)
except (AttributeError, JSONDecodeError):
os.remove(f".cache-{username}")
token = util.prompt_for_user_token(username,
scope=scope,client_id=client_id,
client_secret=client_secret,redirect_uri=redirect_uri)
sp=spotipy.Spotify(auth=token)
today = date.today()
date_string = (str(today.day) + ' - ' + str(today.month) + ' - ' + str(today.year))
#playlist title
playlist_name = f"GENIE - " + username + ' | ' + date_string
#create a new public playlist to be populated
sp.user_playlist_create(username, name=playlist_name, public=True)
#id of playlist we just created
playlist_id = sp.current_user_playlists(limit=1)['items'][0]['id']
#add playlist tracks to this playlist
sp.user_playlist_add_tracks(username,playlist_id,tracks=track_ids)
return render(request, 'blog/save_playlist.html', {'playlist_id':playlist_id})
当用户输入用户名并登录Spotify时,会弹出多个窗口,而不仅仅是一个窗口(见下面的终端)。我认为问题出在获得代币上。
尝试登录时的终端输出
我已经把Spotify开发者控制台中的重定向URI设置为和上面一样(' http://127 . 0 . 0 . 1:8000/save _ playlist/')。
提前谢谢!
与其使用Spotipy,一个快速的解决方案是转到https://pypi.org/project/spotify-token/,它是一个Python脚本,如果提供了Spotify用户名和密码,它可以生成Spotify令牌。
话虽如此,但请记住,不是每个人都愿意提供他们的用户名和密码。干杯!
尝试一下OAuth请求-oautlibhttps://requests-oauthlib.readthedocs.io/en/latest/examples/spotify.html它就像一个魅力。
< code > util . prompt _ for _ user _ token 不应在允许任何用户登录的web应用程序中使用,因为我们事先不知道用户的ID/名称。只是本地快速上手的帮手。
相反,您应该通过为用户指定唯一的缓存路径来直接使用 spotipy.oauth2.SpotifyOAuth
。对于 Web 应用,它将是会话 ID。
这是一个为Flask制作的完整示例,您可以根据自己的需要进行调整https://github . com/PLA mere/spot ipy/blob/master/examples/app . py
本文向大家介绍asp.net mvc中Forms身份验证身份验证流程,包括了asp.net mvc中Forms身份验证身份验证流程的使用技巧和注意事项,需要的朋友参考一下 验证流程 一、用户登录 1、验证表单:ModelState.IsValid 2、验证用户名和密码:通过查询数据库验证 3、如果用户名和密码正确,则在客户端保存Cookie以保存用户登录状态:SetAuthCookie 1
身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工
我正在尝试向登录Spotify发送身份验证请求。 这是由javascript XMLHttpRequest通过本地主机运行的。然而,我收到的只是一条错误消息,指出: XMLHttpRequest无法加载https://accounts.spotify.com/authorize/?q=undefined 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许
问题内容: 我正在尝试在Node.js中使用Socket.IO,并试图允许服务器为每个Socket.IO客户端赋予一个身份。由于套接字代码不在http服务器代码的范围内,因此无法轻松访问已发送的请求信息,因此我假设在连接期间需要将其发送出去。什么是最好的方法 1)将有关谁通过Socket.IO连接到服务器的信息 2)验证他们说的是谁(如果正在使事情变得更容易,我目前正在使用Express) 问题答
我试图使用swift代码在网站上找到这里,但响应是html代码与两个错误:“您必须输入密码!”和“您必须输入用户名!”我是NSURLSession的新手,试图更改用于身份验证的字符串,但无法更改响应。下面是我的代码: 这是控制台响应中的内容:
我正在开发一个具有自己的身份验证和授权机制的REST应用程序。我想使用JSON Web Tokens进行身份验证。以下是有效且安全的实现吗? < li >将开发一个REST API来接受用户名和密码并进行认证。要使用的HTTP方法是POST,因此没有缓存。此外,在传输时还会有安全SSL < li >在认证时,将创建两个JWTs访问令牌和刷新令牌。刷新令牌将具有更长的有效期。这两个令牌都将写入coo