import httplib
import time
import httplib
import time
+from forum.settings import APP_URL
from forum.authentication.base import AuthenticationConsumer, InvalidAuthentication
from django.utils.translation import ugettext as _
from forum.authentication.base import AuthenticationConsumer, InvalidAuthentication
from django.utils.translation import ugettext as _
+from django.core.urlresolvers import reverse
+from settings import TWITTER_AUTO_CALLBACK_REDIRECT
from lib import oauth2
class OAuthAbstractAuthConsumer(AuthenticationConsumer):
from lib import oauth2
class OAuthAbstractAuthConsumer(AuthenticationConsumer):
return {}
def fetch_request_token(self):
return {}
def fetch_request_token(self):
- oauth_request = oauth2.Request.from_consumer_and_token(self.consumer, http_url=self.request_token_url)
+ parameters = {}
+ # If the installation is configured to automatically redirect to the Twitter provider done page -- do it.
+ if bool(TWITTER_AUTO_CALLBACK_REDIRECT):
+ callback_url = '%s%s' % (APP_URL, reverse('auth_provider_done', kwargs={ 'provider' : 'twitter', }))
+ # Pass
+ parameters.update({
+ 'oauth_callback' : callback_url,
+ })
+
+ oauth_request = oauth2.Request.from_consumer_and_token(self.consumer, http_url=self.request_token_url, parameters=parameters)
oauth_request.sign_request(self.signature_method, self.consumer, None)
params = oauth_request
data = urllib.urlencode(params)
oauth_request.sign_request(self.signature_method, self.consumer, None)
params = oauth_request
data = urllib.urlencode(params)
url = oauth_request.to_url()
connection = httplib.HTTPSConnection(self.server_url)
url = oauth_request.to_url()
connection = httplib.HTTPSConnection(self.server_url)
- connection.request(oauth_request.http_method, url)
+ connection.request("GET", url)
return connection.getresponse().read()
return connection.getresponse().read()
from forum.settings import EXT_KEYS_SET
from forum.settings.base import Setting
from forum.settings import EXT_KEYS_SET
from forum.settings.base import Setting
+from django.utils.translation import ugettext_lazy as _
TWITTER_CONSUMER_KEY = Setting('TWITTER_CONSUMER_KEY', '', EXT_KEYS_SET, dict(
TWITTER_CONSUMER_KEY = Setting('TWITTER_CONSUMER_KEY', '', EXT_KEYS_SET, dict(
-label = "Twitter consumer key",
-help_text = """
+label = _("Twitter consumer key"),
+help_text = _("""
Get this key at the <a href="http://twitter.com/apps/">Twitter apps</a> to enable
authentication in your site through Twitter.
Get this key at the <a href="http://twitter.com/apps/">Twitter apps</a> to enable
authentication in your site through Twitter.
required=False))
TWITTER_CONSUMER_SECRET = Setting('TWITTER_CONSUMER_SECRET', '', EXT_KEYS_SET, dict(
required=False))
TWITTER_CONSUMER_SECRET = Setting('TWITTER_CONSUMER_SECRET', '', EXT_KEYS_SET, dict(
-label = "Twitter consumer secret",
-help_text = """
+label = _("Twitter consumer secret"),
+help_text = _("""
This your Twitter consumer secret that you'll get in the same place as the consumer key.
This your Twitter consumer secret that you'll get in the same place as the consumer key.
+TWITTER_AUTO_CALLBACK_REDIRECT = Setting('TWITTER_AUTO_CALLBACK_REDIRECT', True, EXT_KEYS_SET, dict(
+label = _("Twitter auto-callback redirect"),
+help_text = _("""
+Automatically redirect to the Twitter authentication done page, pass the oauth_callback parameter.
+"""),
+required=False))