Пример #1
0
    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}
Пример #2
0
 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