diff --git a/CHANGELOG.rst b/CHANGELOG.rst index db75618..c3184fd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,7 @@ +0.3.1 (2019-05-24) +================== +* Fix auth with newer versions of OAuth libraries while retaining backward compatibility + 0.3.0 (2017-01-24) ================== * Surface errors better diff --git a/README.rst b/README.rst index 90797ba..e1a576d 100644 --- a/README.rst +++ b/README.rst @@ -1,6 +1,8 @@ python-fitbit ============= +.. image:: https://badge.fury.io/py/fitbit.svg + :target: https://badge.fury.io/py/fitbit .. image:: https://travis-ci.org/orcasgit/python-fitbit.svg?branch=master :target: https://travis-ci.org/orcasgit/python-fitbit :alt: Build Status diff --git a/fitbit/__init__.py b/fitbit/__init__.py index a19bb4a..0368d08 100644 --- a/fitbit/__init__.py +++ b/fitbit/__init__.py @@ -3,7 +3,7 @@ Fitbit API Library ------------------ -:copyright: 2012-2017 ORCAS. +:copyright: 2012-2019 ORCAS. :license: BSD, see LICENSE for more details. """ @@ -17,8 +17,8 @@ __copyright__ = 'Copyright 2012-2017 ORCAS' __license__ = 'Apache 2.0' -__version__ = '0.3.0' -__release__ = '0.3.0' +__version__ = '0.3.1' +__release__ = '0.3.1' # Module namespace. diff --git a/fitbit/api.py b/fitbit/api.py index ba9d037..1b458b1 100644 --- a/fitbit/api.py +++ b/fitbit/api.py @@ -143,6 +143,7 @@ def fetch_access_token(self, code, redirect_uri=None): self.access_token_url, username=self.client_id, password=self.client_secret, + client_secret=self.client_secret, code=code) def refresh_token(self): diff --git a/gather_keys_oauth2.py b/gather_keys_oauth2.py index aade911..39a19f8 100755 --- a/gather_keys_oauth2.py +++ b/gather_keys_oauth2.py @@ -6,6 +6,7 @@ import traceback import webbrowser +from urllib.parse import urlparse from base64 import b64encode from fitbit.api import Fitbit from oauthlib.oauth2.rfc6749.errors import MismatchingStateError, MissingTokenError @@ -28,6 +29,8 @@ def __init__(self, client_id, client_secret, timeout=10, ) + self.redirect_uri = redirect_uri + def browser_authorize(self): """ Open a browser to the authorization url and spool up a CherryPy @@ -36,6 +39,12 @@ def browser_authorize(self): url, _ = self.fitbit.client.authorize_token_url() # Open the web browser in a new thread for command-line browser support threading.Timer(1, webbrowser.open, args=(url,)).start() + + # Same with redirect_uri hostname and port. + urlparams = urlparse(self.redirect_uri) + cherrypy.config.update({'server.socket_host': urlparams.hostname, + 'server.socket_port': urlparams.port}) + cherrypy.quickstart(self) @cherrypy.expose