Skip to content

Instantly share code, notes, and snippets.

@sserrano44
Created September 30, 2012 01:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sserrano44/3805620 to your computer and use it in GitHub Desktop.
Save sserrano44/3805620 to your computer and use it in GitHub Desktop.
webapp2 twitter login with tweepy
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()
# -*- 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)
TWITTER_CONSUMER_KEY = "..."
TWITTER_CONSUMER_SECRET = "..."
SECRET_KEY = "..."
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