def __init__(self, request=None, response=None): self.now = datetime.datetime.now() self.tv = {} self.settings = SETTINGS.copy() self.initialize(request, response) self.has_pass = False self.tv["version"] = os.environ['CURRENT_VERSION_ID'] self.local = False if "127.0.0.1" in self.request.uri or "localhost" in self.request.uri: self.local = True # misc self.tv["current_url"] = self.request.uri self.tv["fb_login_url"] = facebook.generate_login_url(self.request.path, self.uri_for('www-fblogin')) if "?" in self.request.uri: self.tv["current_base_url"] = self.request.uri[0:(self.request.uri.find('?'))] else: self.tv["current_base_url"] = self.request.uri try: self.tv["safe_current_base_url"] = urllib.quote(self.tv["current_base_url"]) except: logging.exception("safe url error") self.tv["request_method"] = self.request.method self.session = self.get_session() self.user = self.get_current_user()
def get(self): if not self.settings["enable_fb_login"]: self.redirect(self.uri_for("www-login")) return if self.user: self.redirect(self.uri_for('www-dashboard', referred="fblogin")) return if self.request.get('code') and self.request.get('state'): state = self.request.get('state') code = self.request.get('code') access_token = facebook.code_to_access_token(code, self.uri_for('www-fblogin')) if not access_token: # Assume expiration, just redirect to login page self.redirect(self.uri_for('www-login', referred="fblogin", error="We were not able to connect with Facebook. Please try again.")) return url = "https://graph.facebook.com/me?access_token=" + access_token result = urlfetch.fetch(url) if result.status_code == 200: self.login_fb(simplejson.loads(result.content), access_token) self.redirect(str(state)) return else: self.redirect(facebook.generate_login_url(self.request.get('goto'), self.uri_for('www-fblogin')))