Created
September 30, 2012 01:55
-
-
Save sserrano44/3805620 to your computer and use it in GitHub Desktop.
webapp2 twitter login with tweepy
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import webapp2 | |
from webapp2_extras import jinja2 | |
from webapp2_extras import sessions | |
import settings | |
class BaseHandler(webapp2.RequestHandler): | |
def dispatch(self): | |
# Get a session store for this request. | |
self.session_store = sessions.get_store(request=self.request) | |
try: | |
# Dispatch the request. | |
webapp2.RequestHandler.dispatch(self) | |
finally: | |
# Save all sessions. | |
self.session_store.save_sessions(self.response) | |
#TEMPLATES | |
@webapp2.cached_property | |
def jinja2(self): | |
# Returns a Jinja2 renderer cached in the app registry. | |
return jinja2.get_jinja2(app=self.app) | |
def render(self, _template, **context): | |
params = {} # global parameters | |
params.update(context) | |
rv = self.jinja2.render_template(_template, ** params) | |
return rv | |
def render_response(self, _template, **context): | |
# Renders a template and writes the result to the response. | |
self.response.write(self.render(_template, **context)) | |
#SESSION | |
@webapp2.cached_property | |
def session(self): | |
# Returns a session using the default cookie key. | |
return self.session_store.get_session() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
import webapp2 | |
import settings | |
from views import MainHandler, TwitterHandler | |
config = {} | |
config['webapp2_extras.sessions'] = { | |
'secret_key': settings.SECRET_KEY, | |
} | |
app = webapp2.WSGIApplication([ | |
#site | |
('/', MainHandler), | |
('/auth/', TwitterHandler), | |
], debug=settings.DEVELOPMENT, config=config) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TWITTER_CONSUMER_KEY = "..." | |
TWITTER_CONSUMER_SECRET = "..." | |
SECRET_KEY = "..." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tweepy | |
from base import BaseHandler | |
import settings | |
class MainHandler(BaseHandler): | |
def get(self): | |
context = {} | |
self.render_response('main.html', ** context) | |
class TwitterHandler(BaseHandler): | |
def get(self): | |
if 'token' in self.session: | |
return self.redirect("/") | |
auth = tweepy.OAuthHandler(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET) | |
oauth_token = self.request.get("oauth_token") | |
oauth_verifier = self.request.get("oauth_verifier") | |
if oauth_token: | |
auth.set_request_token(self.session['request_token_key'], self.session['request_token_secret']) | |
token = auth.get_access_token(oauth_verifier) | |
self.session['token'] = token.to_string() | |
api = tweepy.API(auth) | |
self.session['me'] = api.me() | |
return self.redirect("/") | |
else: | |
auth_url = auth.get_authorization_url(True) | |
self.session['request_token_key'] = auth.request_token.key | |
self.session['request_token_secret'] = auth.request_token.secret | |
return self.redirect(auth_url) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment