def identify(self, environ): request = Request(environ) params = facebook.get_user_from_cookie(request.cookies, self.appid, self.secret) if params is None: # user is not logged in to his/her facebook account or hasn't granted # access to this application return None fb = facebook.GraphAPI(params['access_token']) try: user = DBSession.query(User).filter(User.fbid==params['uid']).one() except (NoResultFound, MultipleResultsFound): try: profile = fb.get_object('me') except facebook.GraphAPIError: return None if 'id' not in profile: # we couldn't get any information from facebook. login failed. return None user = User(email=profile['email'], name=profile['name'], fbid=profile['id']) DBSession.add(user) transaction.commit() try: return {'repoze.who.userid': user.email, 'facebook': True} except UnboundExecutionError: return {'repoze.who.userid': profile['email'], 'facebook': True}
def setUp(self): """Prepare model test fixture.""" try: new_attrs = {} new_attrs.update(self.attrs) new_attrs.update(self.do_get_dependencies()) self.obj = self.klass(**new_attrs) DBSession.add(self.obj) DBSession.flush() return self.obj except: DBSession.rollback() raise