diff --git a/morss/morss.py b/morss/morss.py index 74a5d83..03cac7f 100644 --- a/morss/morss.py +++ b/morss/morss.py @@ -46,10 +46,6 @@ MIMETYPE = { 'xml': ['text/xml', 'application/xml', 'application/rss+xml', 'application/rdf+xml', 'application/atom+xml'], 'html': ['text/html', 'application/xhtml+xml', 'application/xml']} -FBAPPID = "" -FBSECRET = "" -FBAPPTOKEN = FBAPPID + '|' + FBSECRET - PROTOCOL = ['http', 'https', 'ftp'] if 'SCRIPT_NAME' in os.environ: @@ -673,7 +669,7 @@ def cgi_app(environ, start_response): if 'HTTP_IF_NONE_MATCH' in environ: options['last'] = int(environ['HTTP_IF_NONE_MATCH'][1:-1]) - if not options.force and not options.facebook and time.time() - options.last < DELAY: + if not options.force and time.time() - options.last < DELAY: headers['status'] = '304 Not Modified' start_response(headers['status'], headers.items()) log(url) @@ -703,11 +699,6 @@ def cgi_app(environ, start_response): url, cache = Init(url, os.getcwd() + '/cache', options) - if options.facebook: - do_facebook(url, environ, headers, options, cache) - start_response(headers['status'], headers.items()) - return - # get the work done rss = Fetch(url, cache, options) @@ -786,36 +777,6 @@ def cli_app(): log('done') -def do_facebook(url, environ, headers, options, cache): - log('fb stuff') - - query = urlparse.urlparse(url).query - - if 'code' in query: - # get real token from code - code = urlparse.parse_qs(query)['code'][0] - eurl = "https://graph.facebook.com/oauth/access_token?client_id={app_id}&redirect_uri={redirect_uri}&client_secret={app_secret}&code={code_parameter}".format( - app_id=FBAPPID, app_secret=FBSECRET, code_parameter=code, redirect_uri=environ['SCRIPT_URI']) - token = urlparse.parse_qs(urllib2.urlopen(eurl).read().strip())['access_token'][0] - - # get long-lived access token - eurl = "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={short_lived_token}".format( - app_id=FBAPPID, app_secret=FBSECRET, short_lived_token=token) - values = urlparse.parse_qs(urllib2.urlopen(eurl).read().strip()) - - ltoken = values['access_token'][0] - expires = int(time.time() + int(values['expires'][0])) - - headers['set-cookie'] = 'token={token}; Path=/'.format(token=ltoken) - - # headers - headers['status'] = '303 See Other' - headers['location'] = 'http://{domain}/'.format(domain=environ['SERVER_NAME']) - - log('fb done') - return - - def main(): if 'REQUEST_URI' in os.environ: wsgiref.handlers.CGIHandler().run(cgi_wrapper) diff --git a/www/facebook.php b/www/facebook.php new file mode 100644 index 0000000..f5e4de0 --- /dev/null +++ b/www/facebook.php @@ -0,0 +1,27 @@ +"); +define('FBSECRET', ""); +define('FBAPPTOKEN', FBAPPID . '|' . FBSECRET); + +if (isset($_GET['code'])) +{ + # get real token from code + $code = $_GET['code']; + $eurl = sprintf("https://graph.facebook.com/oauth/access_token?client_id=%s&redirect_uri=%s&client_secret=%s&code=%s", + FBAPPID, $_SERVER['SCRIPT_URI'], FBSECRET, $code); + parse_str(file_get_contents($eurl), $values); + $token = $values['access_token']; + + # get long-lived access token + $eurl = sprintf("https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=%s&client_secret=%s&fb_exchange_token=%s", + FBAPPID, FBSECRET, $token); + parse_str(file_get_contents($eurl), $values); + $ltoken = $values['access_token']; + + setcookie('token', $ltoken, 0, '/'); + + # headers + header('status: 303 See Other'); + header('location: http://' . $_SERVER['SERVER_NAME'] . '/'); +}