def _on_signin(self, data, auth_info, provider): """Callback whenever a new or existing user is logging in. data is a user info dictionary. auth_info contains access token or oauth token and secret. See what's in it with logging.info(data, auth_info) """ auth_id = '%s:%s' % (provider, data['id']) # 1. check whether user exist, e.g. # User.get_by_auth_id(auth_id) # # 2. create a new user if it doesn't # User(**data).put() # # 3. sign in the user # self.session['_user_id'] = auth_id # # 4. redirect somewhere, e.g. self.redirect('/profile') # # See more on how to work the above steps here: # http://webapp-improved.appspot.com/api/webapp2_extras/auth.html # http://code.google.com/p/webapp-improved/issues/detail?id=20 currentregistereduser = None #check for user existance upon login/registration try: user_db_qry = User.query(User.oauth2_id == auth_id) user_db_list = user_db_qry.fetch(1) currentregistereduser = user_db_list[0] #if the user does not exist yet except IndexError: name = None # try: name = data['name'] except KeyError: name = None user_db = User( name=name, oauth2_id=auth_id, prestige = 100, ) user_db.put() user_db.model_id = user_db.key.id() user_db.put() currentregistereduser = user_db self.session['_user_id'] = auth_id self.session['data'] = data currentregistereduser.created = None currentregistereduser.last_modified = None currentregistereduser.avatar = None self.session['_current_user'] = currentregistereduser.to_dict() if currentregistereduser.username: self.redirect("/") else: self.redirect("/profile")