From da211113d5e870fed9f5b4e306cd349d9dbad503 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Fri, 12 Nov 2010 16:27:58 -0200 Subject: [PATCH] Fix twitter process with custom redirect parameter --- social_auth/auth.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/social_auth/auth.py b/social_auth/auth.py index a1b3aa8..b3cedaa 100644 --- a/social_auth/auth.py +++ b/social_auth/auth.py @@ -109,12 +109,14 @@ class YahooAuth(OpenIdAuth): return OPENID_YAHOO_URL -class TwitterAuth(BaseAuth): - """Twitter OAuth authentication mechanism""" +class BaseOAuth(BaseAuth): def __init__(self, request, redirect): - super(TwitterAuth, self).__init__(request, redirect) - self.redirect_uri = self.request.build_absolute_uri(reverse('social:complete', args=['twitter'])) + super(BaseOAuth, self).__init__(request, redirect) + self.redirect_uri = self.request.build_absolute_uri(self.redirect) + +class TwitterAuth(BaseOAuth): + """Twitter OAuth authentication mechanism""" def auth_url(self): """Returns redirect url""" token = self.unauthorized_token() @@ -155,8 +157,14 @@ class TwitterAuth(BaseAuth): def oauth_request(self, token, url): params = {'oauth_callback': self.redirect_uri} - request = OAuthRequest.from_consumer_and_token(self.consumer, token=token, http_url=url, parameters=params) - request.sign_request(OAuthSignatureMethod_HMAC_SHA1(), self.consumer, token) + if 'oauth_verifier' in self.request.GET: + params['oauth_verifier'] = self.request.GET['oauth_verifier'] + request = OAuthRequest.from_consumer_and_token(self.consumer, + token=token, + http_url=url, + parameters=params) + request.sign_request(OAuthSignatureMethod_HMAC_SHA1(), self.consumer, + token) return request def fetch_response(self, request): @@ -182,11 +190,12 @@ class TwitterAuth(BaseAuth): return cons -class FacebookAuth(BaseAuth): +class FacebookAuth(BaseOAuth): + """Facebook OAuth mechanism""" def __init__(self, request, redirect): super(FacebookAuth, self).__init__(request, redirect) - self.redirect_uri = self.request.build_absolute_uri(self.redirect) - if settings.DEBUG: + if settings.DEBUG and self.redirect_uri: + # Facebook doesn't accept custom ports self.redirect_uri = self.redirect_uri.replace(':8000', '') def auth_url(self): -- 2.39.5