spotipy authorization code flow

匿名 (未验证) 提交于 2019-12-03 01:47:02

问题:

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 library supports the Authorization code flow ( https://developer.spotify.com/web-api/authorization-guide/#authorization-code-flow ).

回答1:

The Spotipy library supports the Authorization Code flow, as documented here. For more information, you could also check out Spotipy's oAuth2 module and Util module.



回答2:

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) 


回答3:

When I was trying to do this none of these answers really got me there unfortunately. When I ended up figuring it out I detailed how in this post: https://stackoverflow.com/a/42443878/2963703 I was using Django as my backend but all the spotify api oauth stuff is done in javascript so it should still be very useful for you.



回答4:

If someone needs the working code here is my current.

Just remember to change the client_id, etc. I put them in 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) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!