* No username needed + can be used by multiple users
* cleanup
* Remove caches when signing out
* Persist token only once
* Always show auth page
* Add one scope..
* Add a second scope and also a view which utilizes a scope.
* Add a __main__ clause example.
* Include further documentation.
* Move utility function higher in document.
* Add threading to application run call in __main__.
* Add (or reinstate–I thought it had been there) the "me" view.
* Add notes about SPOTIPY_REDIRECT_URI and using alternate port.
And specify that it should be the address that the App runs over.
* Whitespace only.
* Here is an example of importing credentials.
* Delete session_cache file on logout so new user can Authorize.
* Not going to use at this point.
* Update the "me" route method to use new approach to auth.
* Update app.py
Co-authored-by: Stephane Bruckert <contact@stephanebruckert.com>
Co-authored-by: Stephane Bruckert <stephane.bruckert@gmail.com>
Some artist or track provide different translation for different language
usage. This requires send http request with Accept-Language in header.
Create this option for people who wants to see proper translation.
* Added base funtionality for PKCE Authorization - i538
* fixed a mistake with the auth code
* fixed more misunderstandings. fixed grant_access_token to now call authorization if needed
* added comments and references to code verifier and code challenge
* removed debug print statement
* updated unit tests for new PKCE flow
* cleaned up username issues - added doc strings to class
* fixed import issue, added user endpoint tests
* forgot to commit this file
* linted
* clarified comment
* no longer generates code verifier or challenge in constructor, only when needed
* fixed flake8 complaints, added forgotten unit tests
* fixed linting with unit tests
* anotha one
* added python3.5 support
* linting
* added to CHANGELOG
* removed as_dict option from get_access_token()
Co-authored-by: tomCLANCC <26153156+tomCLANCC@users.noreply.github.com>
* Update playlist endpoints to modern format
Deprecate user_playlist_* in favor of the following replacements:
* user_playlist_change_details -> playlist_change_details
* user_playlist_unfollow -> current_user_unfollow_playlist
* user_playlist_add_tracks -> playlist_add_tracks
* user_playlist_replace_tracks -> playlist_replace_tracks
* user_playlist_reorder_tracks -> playlist_reorder_tracks
* user_playlist_remove_all_occurrences_of_tracks -> playlist_remove_all_occurrences_of_tracks
* user_playlist_remove_specific_occurrences_of_tracks -> playlist_remove_specific_occurrences_of_tracks
* user_playlist_follow_playlist -> current_user_follow_playlist
* user_playlist_is_following -> playlist_is_following
* Add current_user_following_artists and current_user_following_users
* Update tests and examples
Resolve TODO in test_user_endpoints.py > SpotifyFollowApiTests.test_user_follows_and_unfollows_user
Use modern playlist endpoints (no username required) in tests and examples.
* Update changelog
* Deprecate playlist_tracks in favor of playlist_items
* Link deprecated functions to new functions and change tracks to items
* Fix references to playlist_tracks
* Change test_playlist_add_items as requested
* Allow for total headless mode by instructing the user to open the URL in a browser.
* Fix line too long
* Update changelog
* Clarify changelog entry
* Remove reduntant log about pasting the URL.
* resolve return object formatting issues referened in #526
* resolve comments from @ritiek
* create separate method to search multiple markets
* Use old description again
* market -> markets + fix test
* pep8
* Use break
Co-authored-by: Stephane Bruckert <contact@stephanebruckert.com>
* Add support to search multiple markets. Pass in a list or ALL to search all markets.
* pep8 formatting and verification with flake8
* work on comments from stephanebruckert
* pep8 formatting
* run autopep8 formatting
* fix typo
* allow tuple of markets to be passed. Add unit tests for this case
* Create playlist_all_tracks.py
* Update playlist_all_tracks.py
forgot first items from playlist
* print result instead of returning it
* rename to playlist_all_non_local_tracks
* Update playlist_all_non_local_tracks.py
removed "== True" as it's implied
give an example playlist (global top 50)
more comments
corrected typo
* print only length and excluding instead of entire result
* Add SpotifyImplicitGrant with get_access_token and get_cached_token (and minimum related functions)
* Add some overlooked necessary methods/values in SpotifyImplicitGrant
* Remove unsuppported functionality and make SpotifyImplicitGrant public
* Allow/Expose integration of SpotifyImplicitGrant in client
* Add Implicit Grant tests and decrease abilities of prompt_for_user_token
Remove Implicit Grant and state support from prompt_for_user_token
* Add documentation and changelog entry
* Touch up PEP8 compliance
* Ignore long line with link for flake8
* Correct changelog
* Restore compatibility with Python 2.7
* Correct help(SpotifyImplicitGrant.get_access_token)
* Remove as_dict from SpotifyImplicitGrant.get_access_token
* Combine status check functionality with implicit grant support
In oauth2.py:
* Add state checking to SpotifyImplicitGrant
* Add dedicated SpotifyStateError as subclass of SpotifyOauthError
* Moved `_get_user_input` from SpotifyOAuth to superclass SpotifyAuthBase
* Renamed `parse_oauth_response_url` to `parse_auth_response_url`
* Moved error handling into `parse_auth_response_url`
Made minor changes in tests and client.py accordingly
* Update changelog
* Trim down tests for SpotifyImplicitGrant
* Fix trailing whitespace
* - Verify that the state received alongside the authorization code is consistent with the one sent
- Refactor URL parsing for the local server way and the interactive way
- Add tests for interactive way
* Resurrect public methods parse_response_code and get_authorization_code
* Use new method parse_oatuh_response_url for parse_response_code implementation.
- add error and error description to SpotifyOauthError to reflect the data returned by web api when error happens
- unit test to SpotifyClientCredentials.get_access_token is added for invalid client
Currently it is not possible to extend SpotifyClientCredentials and SpotifyOAuth
This is because in the class __init__ they refer to 'self.__class__', this leads
to an infinite recursion if the parent class doesn't override completely the __init__
method.
* Fixed issue where using rediret uri 'localhost' (without specifying a port) would cause the authorization process to hang (not asking the user to paste/enter the URL redirected to)
* Updated the documentation to match the changes to the authorization process - also kind of fixing issues #474 and #471
* Fixed Flake8 over-indentation remark
When spotify redirects the browser to localhost, serve the page with a
simple http server implemented by HTTPServer. By this way, we can obtain
the tokens the oauth service want so provide us, and no need to input the
user the redirect URL.
This method only works when the application in spotify developer dashboard
is configured to redirect the requests to localhost.
To use this method it is required to specify the redirect_url pointing to
localhost with simple http, to a non-privilegized port (unless the script is
run as root).