我正在使用scope库将歌曲添加到播放列表中,但是当我尝试使用“播放列表-修改-私有”范围时,我总是会遇到错误。当试图获得授权时,web浏览器打开,我允许应用程序访问我的spotify accoutn,然后我立即遇到一个错误屏幕。重新运行这个应用程序只会让我直接进入错误屏幕。我没有错误代码或任何东西,所以我不知道为什么会发生这种情况。
self.scope = 'playlist-modify-private'
self.redirect_uri = 'localhost:8888/callback'
self.auth = util.prompt_for_user_token(username=self.username,
scope=self.scope,
client_id=self.client_id,
client_secret=self.client_secret,
redirect_uri=self.redirect_uri)
我看到一个帖子说,对于这个范围,我应该在auth中使用util模块,但是我没有运气。最初,我使用的是auth SpotifyClientCredentials对象,能够完成大部分项目,但是我无法修改播放列表,因为它不带作用域。如果有人能提供任何信息,我会不知所措。
发布于 2020-09-15 17:28:48
试试这个:
首先,在env上设置以下环境变量。
SPOTIPY_CLIENT_ID="<your_client_id>"
SPOTIPY_CLIENT_SECRET="<your_client_secret>"
SPOTIPY_REDIRECT_URI="http://127.0.0.1:8888/callback"
SPOTIPY_CLIENT_USERNAME="<your_username>"
然后运行以下代码(我正在使用dotenv
加载上面的变量),请检查文档这里
import os
import spotipy
from spotipy.oauth2 import SpotifyOAuth
from dotenv import load_dotenv
load_dotenv() # Load your environment variables from a .env file
spotify_user = os.environ.get("SPOTIPY_CLIENT_USERNAME")
spotify_scope = "playlist-modify-private"
oauth = SpotifyOAuth(username=spotify_user, scope=spotify_scope)
user_token = oauth.get_access_token(as_dict=False)
它将带您到redirect_uri
并生成一个.cache-<your_username>
文件,其中包含所需的所有信息(令牌、refresh_token等)。
然后使用以下内容创建spotify客户端:
spotify = spotipy.Spotify(auth=user_token)
这将自动获得您的令牌或获得刷新令牌,以防需要它,因此您不必担心这个问题。然后,您将能够使用以下内容修改播放列表:
spotify.user_playlist_add_tracks(
user=os.environ.get("SPOTIPY_CLIENT_USERNAME"),
playlist_id="<your_playlist_uri>",
tracks=["<track_uri>"])
下面是spotipy库使用的环境变量的doc引用:https://spotipy.readthedocs.io/en/2.15.0/?highlight=environment%20variables#quick-start
https://stackoverflow.com/questions/63712286
复制相似问题