spotipy authorization code flow

前端 未结 4 1820
無奈伤痛
無奈伤痛 2020-12-15 00:32

I am using the Spotipy python library to interact with the Spotify web api. I have worked through the API and docs but I do not see a clear example that shows how the libra

4条回答
  •  [愿得一人]
    2020-12-15 00:58

    I implemented a simple Authorization Code flow with the help of Spotipy. Maybe this is helpful for other people as well. Also on github: https://github.com/perelin/spotipy_oauth_demo

    Here is the code:

    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 = "Login to Spotify"
        return htmlLoginButton
    
    def getSPOauthURI():
        auth_url = sp_oauth.get_authorize_url()
        return auth_url
    
    run(host='', port=8080)
    

提交回复
热议问题