From: Matías Aguirre Date: Thu, 22 Dec 2011 17:01:17 +0000 (-0200) Subject: Fix google oauth athorization request. Closes #202. X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=cafd4e90115bb63ed3097ff09c96a6e95e23b4cd;p=django-social-auth.git Fix google oauth athorization request. Closes #202. --- diff --git a/social_auth/backends/__init__.py b/social_auth/backends/__init__.py index 53c6cb3..4a93c12 100644 --- a/social_auth/backends/__init__.py +++ b/social_auth/backends/__init__.py @@ -171,6 +171,7 @@ class SocialAuthBackend(ModelBackend): except User.DoesNotExist: return None + class OAuthBackend(SocialAuthBackend): """OAuth authentication backend base class. @@ -456,8 +457,7 @@ class ConsumerBasedOAuth(BaseOAuth): token = self.unauthorized_token() name = self.AUTH_BACKEND.name + 'unauthorized_token_name' self.request.session[name] = token.to_string() - return self.oauth_request(token, self.AUTHORIZATION_URL, - self.auth_extra_arguments()).to_url() + return self.oauth_authorization_request(token).to_url() def auth_complete(self, *args, **kwargs): """Return user, might be logged in""" @@ -484,6 +484,11 @@ class ConsumerBasedOAuth(BaseOAuth): response = self.fetch_response(request) return Token.from_string(response) + def oauth_authorization_request(self, token): + """Generate OAuth request to authorize token.""" + return self.oauth_request(token, self.AUTHORIZATION_URL, + self.auth_extra_arguments()) + def oauth_request(self, token, url, extra_params=None): """Generate OAuth request, setups callback url""" params = {'oauth_callback': self.redirect_uri} diff --git a/social_auth/backends/google.py b/social_auth/backends/google.py index d7fddee..21b5453 100644 --- a/social_auth/backends/google.py +++ b/social_auth/backends/google.py @@ -19,6 +19,8 @@ logger = logging.getLogger(__name__) from urllib import urlencode from urllib2 import Request, urlopen +from oauth2 import Request as OAuthRequest + from django.conf import settings from django.utils import simplejson @@ -116,6 +118,12 @@ class GoogleOAuth(BaseGoogleOAuth): url, params = request.to_url().split('?', 1) return googleapis_email(url, params) + def oauth_authorization_request(self, token): + """Generate OAuth request to authorize token.""" + return OAuthRequest.from_consumer_and_token(self.consumer, + token=token, + http_url=self.AUTHORIZATION_URL) + def oauth_request(self, token, url, extra_params=None): extra_params = extra_params or {} scope = GOOGLE_OAUTH_SCOPE + \ @@ -147,8 +155,7 @@ class GoogleOAuth(BaseGoogleOAuth): def registered(self): """Check if Google OAuth Consumer Key and Consumer Secret are set""" - key, secret = self.get_key_and_secret() - return key != 'anonymous' and secret != 'anonymous' + return self.get_key_and_secret() != ('anonymous', 'anonymous') # TODO: Remove this setting name check, keep for backward compatibility