def is_logged(rhandler=None): session = get_current_session() if session.has_key('user'): return session['user'] else: if rhandler is not None: fbcookie = facebook.get_user_from_cookie(rhandler.request.cookies) if fbcookie: graph = facebook.GraphAPI(fbcookie["access_token"]) profile = graph.get_object("me") query = User.all().filter('fb_ui =', profile['id']).fetch(1); if len( query ) == 1: session = get_current_session() user = query[0] if session.is_active(): session.terminate() session.regenerate_id() session['user'] = user #update access_token..... if user.fb_access_token != fbcookie["access_token"]: user.fb_access_token = fbcookie["access_token"] user.put(); if session.has_key('user'): return session['user'] else: return False
def __init__(self,cookies): self.ids = set() user = facebook.get_user_from_cookie(cookies, Vars.FACEBOOK_APP_ID, Vars.FACEBOOK_APP_SECRET) if user: self.loggedIn = True # self.currentToken = user["access_token"] self.graph = facebook.GraphAPI(user["access_token"]) self.current = int(user['uid']) self.addId(user['uid']) # self.profile = self.graph.get_object("me") # friends = graph.get_connections("me", "friends") else: self.graph = facebook.GraphAPI() if Vars.TESTING: self.current = 11111
def get(self): fbcookie = facebook.get_user_from_cookie(self.request.cookies) if not fbcookie: self.redirect('/') return user = User.is_logged(self) graph = facebook.GraphAPI(fbcookie["access_token"]) profile = graph.get_object("me") if not user: password = helpers.random_string(8) user = User(nickname = profile['username'].lower(), password = User.slow_hash(password)); user.fb_access_token = fbcookie["access_token"] try: user.about = profile['bio'] except: pass try: user.location = profile['location']['name'] except: pass try: user.firstname = profile['first_name'] except: pass try: user.lastname = profile['last_name'] except: pass try: user.fb_profile_url = profile['link'] except: pass try: user.fb_ui = profile['id'] except: pass user.put() session = get_current_session() session.regenerate_id() session['user'] = user self.redirect('/') else: if str(user.fb_ui) == str(profile['id']): self.redirect('/') else: #TODO #USUARIO CAMBIO DE ID?? o ESTA VINCULANDO A CUENTA EXISTENTE pass
def current_user(self): if settings.DEBUG: # Since we can't test real FB user on localhost # I made a fake account user = User.get_by_key_name('100000145269859') if not user: user = User( key_name='100000145269859', id='100000145269859', username='******', name='Eka Putra', profile_url='https://facebook.com/ekaputra07', is_admin=True, access_token='AAAH4xJelaP7vErxcrgPn7VZCdFfmUReP6ZC29tYHui5OO', ) user.put() self.session['user'] = dict( username=user.username, name=user.name, profile_url=user.profile_url, id=user.id, access_token=user.access_token, is_admin=user.is_admin, ) return self.session.get('user'); else: if self.session.get("user"): # User is logged in return self.session.get("user") else: # Either used just logged in or just saw the first page # We'll see here cookie = facebook.get_user_from_cookie(self.request.cookies, settings.FACEBOOK_APP_ID, settings.FACEBOOK_APP_SECRET ) if cookie: # Okay so user logged in. # Now, check to see if existing user user = User.get_by_key_name(cookie["uid"]) if not user: # Not an existing user so get user info graph = facebook.GraphAPI(cookie["access_token"]) profile = graph.get_object("me") username = profile.get('username', 'user%s' % str(profile['id'])[-4:]) user = User( key_name=str(profile['id']), id=str(profile['id']), username=username, name=profile['name'], profile_url=profile['link'], access_token=cookie['access_token'] ) user.put() elif user.access_token != cookie['access_token']: user.access_token = cookie['access_token'] user.put() # User is now logged in self.session['user'] = dict( username=user.username, name=user.name, profile_url=user.profile_url, id=user.id, access_token=user.access_token, is_admin=user.is_admin, ) return self.session.get("user") return None