Exemplo n.º 1
0
    def _get_current_site_user(self):
        cookies = request.cookies
        cookie = fblib.get_user_from_cookie(cookies, 
                                            h.fb_app_id(), 
                                            h.fb_secret())
        user_id = None
        fb_user_id = None
        fb_access_token = None
        user = None

        if cookie:
            fb_user_id = h.to_i(cookie['uid'])
            fb_access_token = cookie['access_token']
            fb_access_token_expiry = h.to_i(cookie['expires'])
            last_login = int(time.time())
            user = User.find(fb_user_id=fb_user_id).first() if fb_user_id else None
            if not user:
                user = User.factory(fb_user_id, 
                                    fb_access_token=fb_access_token, 
                                    fb_access_token_expiry=fb_access_token_expiry, 
                                    last_login=last_login)
            try:
                user.update_fb_access_token(fb_access_token, fb_access_token_expiry)
            except fblib.GraphAPIError, e:
                log.warning('caught graph api error while updating access token, flushing cookie: %r', e)
                request.cookies.pop('fbs_%s' % h.fb_app_id(), None)

            user_id = user.user_id