From 0ed8fc09c0ec04a48fbed711484ea5a1dceaae81 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Sat, 14 Apr 2012 21:58:46 -0300 Subject: [PATCH] Fix fitbit userid handling --- social_auth/backends/contrib/fitbit.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/social_auth/backends/contrib/fitbit.py b/social_auth/backends/contrib/fitbit.py index b60d6b3..c1f9610 100644 --- a/social_auth/backends/contrib/fitbit.py +++ b/social_auth/backends/contrib/fitbit.py @@ -26,6 +26,7 @@ FITBIT_SERVER = 'https://api.fitbit.com' FITBIT_REQUEST_TOKEN_URL = '%s/oauth/request_token' % FITBIT_SERVER FITBIT_AUTHORIZATION_URL = '%s/oauth/authorize' % FITBIT_SERVER FITBIT_ACCESS_TOKEN_URL = '%s/oauth/access_token' % FITBIT_SERVER +FITBIT_USERINFO = 'http://api.fitbit.com/1/user/-/profile.json' EXPIRES_NAME = setting('SOCIAL_AUTH_EXPIRATION', 'expires') @@ -37,6 +38,13 @@ class FitbitBackend(OAuthBackend): ('username', 'username'), ('expires', EXPIRES_NAME)] + def get_user_id(self, details, response): + """ + Fitbit doesn't provide user data, it must be requested to its API: + https://wiki.fitbit.com/display/API/API-Get-User-Info + """ + return response['id'] + def get_user_details(self, response): """Return user details from Fitbit account""" return {USERNAME: response.get('id'), @@ -64,18 +72,15 @@ class FitbitAuth(ConsumerBasedOAuth): token = Token.from_string(response) params = parse_qs(response) - token.user_nsid = params['user_nsid'][0] if 'user_nsid' in params \ - else None - token.fullname = params['fullname'][0] if 'fullname' in params \ - else None - token.username = params['username'][0] if 'username' in params \ - else None + token.encoded_user_id = params.get('encoded_user_id', [None])[0] + token.fullname = params.get('fullname', [None])[0] + token.username = params.get('username', [None])[0] return token def user_data(self, access_token, *args, **kwargs): """Loads user data from service""" return { - 'id': access_token.user_nsid, + 'id': access_token.encoded_user_id, 'username': access_token.username, 'fullname': access_token.fullname, } -- 2.39.5