commit 6f5e17e9428a0f4919282fb26879cba9817cdaa0 Author: J. Fernando Sánchez Date: Thu Jun 5 07:37:29 2014 -0700 diff --git a/example.py b/example.py new file mode 100644 index 0000000..f24813d --- /dev/null +++ b/example.py @@ -0,0 +1,78 @@ +import json +from flask import Flask, redirect, session, url_for, request, flash, render_template +from flask_oauth import OAuth +from flask.ext.mongoengine import MongoEngine +from pymongo import MongoClient +from config import * + +with open('config.json', 'r') as f: + config = json.loads(f.read()) + +client = MongoClient() +msettings = config['MONGODB'] +db = client[config['MONGODB']['DB']] +db.authenticate(msettings['USERNAME'], msettings['PASSWORD']) + +oauth = OAuth() +twitter = oauth.remote_app('twitter', + base_url='https://api.twitter.com/1/', + request_token_url='https://api.twitter.com/oauth/request_token', + access_token_url='https://api.twitter.com/oauth/access_token', + authorize_url='https://api.twitter.com/oauth/authenticate', + consumer_key= config['TWITTER']['CONSUMER_KEY'], + consumer_secret= config['TWITTER']['CONSUMER_SECRET'] + ) + + +app = Flask(__name__) +app.config["MONGODB_SETTINGS"] = MONGODB_SETTINGS +app.config["SECRET_KEY"] = SECRET_KEY +#app.config['SERVER_NAME'] = "http://demos.gsi.dit.upm.es/etsitwitter" + +@twitter.tokengetter +def get_twitter_token(token=None): + return session.get('twitter_token') + + +@app.route('/login') +def login(): + if session.has_key('twitter_token'): + del session['twitter_token'] + return twitter.authorize(callback='http://demos.gsi.dit.upm.es/etsitwitter/oauth-authorized') +# next=request.args.get('next') or request.referrer or None)) + +@app.route('/oauth-authorized') +@twitter.authorized_handler +def oauth_authorized(resp): + next_url = '/etsitwitter/thanks' + if resp is None: + flash(u'You denied the request to sign in.') + return redirect(next_url) + token = ( + resp['oauth_token'], + resp['oauth_token_secret'] + ) + user = resp['screen_name'] + session['twitter_token'] = token + session['twitter_user'] = user + db["credentials"].update({"user": user }, {"user": user, "token": token}, True) + flash('You were signed in as %s' % resp['screen_name']) + return redirect(next_url) + +@app.route('/thanks') +def thanks(): + return render_template("thanks.html") + +@app.route('/') +def index(): +# return 'Please LOG IN to help with my research :)' + return render_template('home.html') + +@app.route('/hall') +def hall(): + names = [c["user"] for c in db["credentials"].find()] + return render_template('thanks.html', names=names) + + +if __name__ == '__main__': + app.run() \ No newline at end of file