spotipy授权代码流程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spotipy授权代码流程相关的知识,希望对你有一定的参考价值。

我正在使用Spotipy python库与Spotify web api进行交互。我已经完成了API和文档,但是我没有看到一个明确的示例,它显示了库如何支持授权代码流(https://developer.spotify.com/web-api/authorization-guide/#authorization-code-flow)。

答案

我在Spotipy的帮助下实现了一个简单的授权代码流程。也许这对其他人也有帮助。同样在github上:https://github.com/perelin/spotipy_oauth_demo

这是代码:

from bottle import route, run, request
import spotipy
from spotipy import oauth2

PORT_NUMBER = 8080
SPOTIPY_CLIENT_ID = 'your_client_id'
SPOTIPY_CLIENT_SECRET = 'your_client_secret'
SPOTIPY_REDIRECT_URI = 'http://localhost:8080'
SCOPE = 'user-library-read'
CACHE = '.spotipyoauthcache'

sp_oauth = oauth2.SpotifyOAuth( SPOTIPY_CLIENT_ID, SPOTIPY_CLIENT_SECRET,SPOTIPY_REDIRECT_URI,scope=SCOPE,cache_path=CACHE )

@route('/')
def index():

    access_token = ""

    token_info = sp_oauth.get_cached_token()

    if token_info:
        print "Found cached token!"
        access_token = token_info['access_token']
    else:
        url = request.url
        code = sp_oauth.parse_response_code(url)
        if code:
            print "Found Spotify auth code in Request URL! Trying to get valid access token..."
            token_info = sp_oauth.get_access_token(code)
            access_token = token_info['access_token']

    if access_token:
        print "Access token available! Trying to get user information..."
        sp = spotipy.Spotify(access_token)
        results = sp.current_user()
        return results

    else:
        return htmlForLoginButton()

def htmlForLoginButton():
    auth_url = getSPOauthURI()
    htmlLoginButton = "<a href='" + auth_url + "'>Login to Spotify</a>"
    return htmlLoginButton

def getSPOauthURI():
    auth_url = sp_oauth.get_authorize_url()
    return auth_url

run(host='', port=8080)
另一答案

如果有人需要工作代码,这是我当前的。

只需记住更改client_id等,我将它们放在config.py中。

import spotipy
import spotipy.util as util
from config import CLIENT_ID, CLIENT_SECRET, PLAY_LIST, USER
import random

token = util.oauth2.SpotifyClientCredentials(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)

cache_token = token.get_access_token()
spotify = spotipy.Spotify(cache_token)

results1 = spotify.user_playlist_tracks(USER, PLAY_LIST, limit=100, offset=0)
另一答案

Spotipy库支持授权代码流,如here所述。有关更多信息,您还可以查看Spotipy的oAuth2 moduleUtil module

另一答案

当我试图这样做时,这些答案中没有一个真的让我在那里。当我最终搞清楚时,我详细说明了这篇文章:https://stackoverflow.com/a/42443878/2963703我使用Django作为我的后端,但所有spotify api oauth的东西都是用javascript完成的,所以它对你来说仍然非常有用。

以上是关于spotipy授权代码流程的主要内容,如果未能解决你的问题,请参考以下文章

Spotipy 使用授权代码流刷新令牌

在没有复制粘贴到控制台的情况下对 Django 授权进行 Spotipy

无法在 Spotipy 中获取新令牌

Spotipy Oauth2 流存储令牌

尝试在 spotipy 中获取访问令牌时授权码无效

获得使用 Python3 的 spotipy 修改 Spotify 播放列表的授权