diff --git a/.travis.yml b/.travis.yml index 9c50862..ca39904 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,12 @@ language: python -python: 3.5 -env: - # Avoid testing pypy on travis until the following issue is fixed: - # https://github.com/travis-ci/travis-ci/issues/4756 - #- TOX_ENV=pypy - - TOX_ENV=py35 - - TOX_ENV=py34 - - TOX_ENV=py33 - - TOX_ENV=py27 - - TOX_ENV=docs +python: + - pypy + - pypy3.5 + - 2.7 + - 3.4 + - 3.5 + - 3.6 install: - - pip install coveralls tox -script: tox -e $TOX_ENV + - pip install coveralls tox-travis +script: tox after_success: coveralls 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 b57101d..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 @@ -10,6 +12,9 @@ python-fitbit .. image:: https://requires.io/github/orcasgit/python-fitbit/requirements.png?branch=master :target: https://requires.io/github/orcasgit/python-fitbit/requirements/?branch=master :alt: Requirements Status +.. image:: https://badges.gitter.im/orcasgit/python-fitbit.png + :target: https://gitter.im/orcasgit/python-fitbit + :alt: Gitter chat Fitbit API Python Client Implementation 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 14c33dc..1b458b1 100644 --- a/fitbit/api.py +++ b/fitbit/api.py @@ -106,7 +106,7 @@ def authorize_token_url(self, scope=None, redirect_uri=None, **kwargs): URL, open their browser to it, or tell them to copy the URL into their browser. - scope: pemissions that that are being requested [default ask all] - - redirect_uri: url to which the reponse will posted. required here + - redirect_uri: url to which the response will posted. required here unless you specify only one Callback URL on the fitbit app or you already passed it to the constructor for more info see https://dev.fitbit.com/docs/oauth2/ @@ -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 diff --git a/setup.py b/setup.py index c17939a..f5c4453 100644 --- a/setup.py +++ b/setup.py @@ -35,9 +35,9 @@ 'Programming Language :: Python', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: Implementation :: PyPy' ), ) diff --git a/tox.ini b/tox.ini index 279b114..71533b0 100644 --- a/tox.ini +++ b/tox.ini @@ -1,25 +1,8 @@ [tox] -envlist = pypy,py35,py34,py33,py27,docs +envlist = pypy-test,pypy3-test,py36-test,py35-test,py34-test,py27-test,py36-docs [testenv] -commands = coverage run --source=fitbit setup.py test +commands = + test: coverage run --source=fitbit setup.py test + docs: sphinx-build -W -b html docs docs/_build deps = -r{toxinidir}/requirements/test.txt - -[testenv:pypy] -basepython = pypy - -[testenv:py35] -basepython = python3.5 - -[testenv:py34] -basepython = python3.4 - -[testenv:py33] -basepython = python3.3 - -[testenv:py27] -basepython = python2.7 - -[testenv:docs] -basepython = python3.4 -commands = sphinx-build -W -b html docs docs/_build