This commit is contained in:
Nick Booth 2020-09-11 11:59:32 +01:00
parent a42f2ccd0f
commit 939f869bbc

View File

@ -245,7 +245,8 @@ class SpotifyOAuth(SpotifyAuthBase):
proxies=None, proxies=None,
show_dialog=False, show_dialog=False,
requests_session=True, requests_session=True,
requests_timeout=None requests_timeout=None,
open_browser=True
): ):
""" """
Creates a SpotifyOAuth object Creates a SpotifyOAuth object
@ -264,6 +265,7 @@ class SpotifyOAuth(SpotifyAuthBase):
* show_dialog: Interpreted as boolean * show_dialog: Interpreted as boolean
* requests_timeout: Tell Requests to stop waiting for a response after a given number * requests_timeout: Tell Requests to stop waiting for a response after a given number
of seconds of seconds
* open_browser: Whether or not the web browser should be opened to authorize a user
""" """
super(SpotifyOAuth, self).__init__(requests_session) super(SpotifyOAuth, self).__init__(requests_session)
@ -280,6 +282,7 @@ class SpotifyOAuth(SpotifyAuthBase):
self.proxies = proxies self.proxies = proxies
self.requests_timeout = requests_timeout self.requests_timeout = requests_timeout
self.show_dialog = show_dialog self.show_dialog = show_dialog
self.open_browser = open_browser
def get_cached_token(self): def get_cached_token(self):
""" Gets a cached auth token """ Gets a cached auth token
@ -382,8 +385,8 @@ class SpotifyOAuth(SpotifyAuthBase):
except webbrowser.Error: except webbrowser.Error:
logger.error("Please navigate here: %s", auth_url) logger.error("Please navigate here: %s", auth_url)
def _get_auth_response_interactive(self, open_browser=True): def _get_auth_response_interactive(self, open_browser=False):
if open_browser: if open_browser or self.open_browser:
self._open_auth_url() self._open_auth_url()
prompt = "Enter the URL you were redirected to: " prompt = "Enter the URL you were redirected to: "
else: else:
@ -413,7 +416,7 @@ class SpotifyOAuth(SpotifyAuthBase):
else: else:
raise SpotifyOauthError("Server listening on localhost has not been accessed") raise SpotifyOauthError("Server listening on localhost has not been accessed")
def get_auth_response(self, open_browser=True): def get_auth_response(self, open_browser=False):
logger.info('User authentication requires interaction with your ' logger.info('User authentication requires interaction with your '
'web browser. Once you enter your credentials and ' 'web browser. Once you enter your credentials and '
'give authorization, you will be redirected to ' 'give authorization, you will be redirected to '
@ -424,7 +427,7 @@ class SpotifyOAuth(SpotifyAuthBase):
redirect_host, redirect_port = get_host_port(redirect_info.netloc) redirect_host, redirect_port = get_host_port(redirect_info.netloc)
if ( if (
open_browser (open_browser or self.open_browser)
and redirect_host in ("127.0.0.1", "localhost") and redirect_host in ("127.0.0.1", "localhost")
and redirect_info.scheme == "http" and redirect_info.scheme == "http"
): ):
@ -584,7 +587,8 @@ class SpotifyPKCE(SpotifyAuthBase):
username=None, username=None,
proxies=None, proxies=None,
requests_timeout=None, requests_timeout=None,
requests_session=True,): requests_session=True,
open_browser=True):
""" """
Creates Auth Manager with the PKCE Auth flow. Creates Auth Manager with the PKCE Auth flow.
@ -602,6 +606,7 @@ class SpotifyPKCE(SpotifyAuthBase):
* proxies: Proxy for the requests library to route through * proxies: Proxy for the requests library to route through
* requests_timeout: Tell Requests to stop waiting for a response after a given number * requests_timeout: Tell Requests to stop waiting for a response after a given number
of seconds of seconds
* open_browser: Whether or not the web browser should be opened to authorize a user
""" """
super(SpotifyPKCE, self).__init__(requests_session) super(SpotifyPKCE, self).__init__(requests_session)
@ -620,6 +625,7 @@ class SpotifyPKCE(SpotifyAuthBase):
self.code_verifier = None self.code_verifier = None
self.code_challenge = None self.code_challenge = None
self.authorization_code = None self.authorization_code = None
self.open_browser = open_browser
def _normalize_scope(self, scope): def _normalize_scope(self, scope):
if scope: if scope:
@ -688,7 +694,7 @@ class SpotifyPKCE(SpotifyAuthBase):
except webbrowser.Error: except webbrowser.Error:
logger.error("Please navigate here: %s", auth_url) logger.error("Please navigate here: %s", auth_url)
def _get_auth_response(self, open_browser=True): def _get_auth_response(self, open_browser=False):
logger.info('User authentication requires interaction with your ' logger.info('User authentication requires interaction with your '
'web browser. Once you enter your credentials and ' 'web browser. Once you enter your credentials and '
'give authorization, you will be redirected to ' 'give authorization, you will be redirected to '
@ -699,7 +705,7 @@ class SpotifyPKCE(SpotifyAuthBase):
redirect_host, redirect_port = get_host_port(redirect_info.netloc) redirect_host, redirect_port = get_host_port(redirect_info.netloc)
if ( if (
open_browser (open_browser or self.open_browser)
and redirect_host in ("127.0.0.1", "localhost") and redirect_host in ("127.0.0.1", "localhost")
and redirect_info.scheme == "http" and redirect_info.scheme == "http"
): ):
@ -730,8 +736,8 @@ class SpotifyPKCE(SpotifyAuthBase):
else: else:
raise SpotifyOauthError("Server listening on localhost has not been accessed") raise SpotifyOauthError("Server listening on localhost has not been accessed")
def _get_auth_response_interactive(self, open_browser=True): def _get_auth_response_interactive(self, open_browser=False):
if open_browser: if open_browser or self.open_browser:
self._open_auth_url() self._open_auth_url()
prompt = "Enter the URL you were redirected to: " prompt = "Enter the URL you were redirected to: "
else: else: