From 45d4cd2062a91b53d7bff9064d6cfdde6107590c Mon Sep 17 00:00:00 2001 From: b3yond Date: Sat, 14 Apr 2018 17:00:30 +0200 Subject: [PATCH 1/3] fixed url() call --- frontend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend.py b/frontend.py index 2fd598d..35a9dc5 100755 --- a/frontend.py +++ b/frontend.py @@ -104,7 +104,7 @@ def login_twitter(user): try: consumer_key = config["twitter"]["consumer_key"] consumer_secret = config["twitter"]["consumer_secret"] - callback_url = url("/login/twitter/callback") + callback_url = url("login/twitter/callback") auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url) try: redirect_url = auth.get_authorization_url() From bf7c21c11344fff0a17769b5e3dfb7f37f8ade0f Mon Sep 17 00:00:00 2001 From: b3yond Date: Sat, 14 Apr 2018 17:19:20 +0200 Subject: [PATCH 2/3] request token is a dict, not a string --- db.py | 1 + user.py | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/db.py b/db.py index d6c52bc..29fa78c 100644 --- a/db.py +++ b/db.py @@ -79,6 +79,7 @@ class DB(object): id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, user_id INTEGER, request_token TEXT, + request_token_secret TEXT, FOREIGN KEY(user_id) REFERENCES user(id) ); CREATE TABLE IF NOT EXISTS twitter_accounts ( diff --git a/user.py b/user.py index 703f9ab..427bf2d 100644 --- a/user.py +++ b/user.py @@ -128,16 +128,17 @@ class User(object): return dict(foo='bar') def save_request_token(self, token): - db.execute("INSERT INTO twitter_request_tokens(user_id, request_token) VALUES(?, ?);", - (self.uid, token)) + db.execute("INSERT INTO twitter_request_tokens(user_id, request_token, request_token_secret) VALUES(?, ?, ?);", + (self.uid, token["oauth_token"], token["oauth_token_secret"])) db.commit() def get_request_token(self): - db.execute("SELECT request_token FROM twitter_request_tokens WHERE user_id = ?;", (id,)) - request_token = db.cur.fetchone()[0] + db.execute("SELECT request_token, request_token_secret FROM twitter_request_tokens WHERE user_id = ?;", (id,)) + request_token = db.cur.fetchone() db.execute("DELETE FROM twitter_request_tokens WHERE user_id = ?;", (id,)) db.commit() - return request_token + return {"oauth_token" : request_token[0], + "oauth_token_secret" : request_token[1]} def save_twitter_token(self, access_token, access_token_secret): db.execute( From 4d556ec595815a542e81c1970a297a541218219c Mon Sep 17 00:00:00 2001 From: b3yond Date: Sat, 14 Apr 2018 17:31:01 +0200 Subject: [PATCH 3/3] don't do except all -.- rather repair the fcking logging. --- frontend.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/frontend.py b/frontend.py index 35a9dc5..585af01 100755 --- a/frontend.py +++ b/frontend.py @@ -101,21 +101,18 @@ def login_twitter(user): Starts the twitter OAuth authentication process. :return: redirect to twitter. """ + consumer_key = config["twitter"]["consumer_key"] + consumer_secret = config["twitter"]["consumer_secret"] + callback_url = url("login/twitter/callback") + auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url) try: - consumer_key = config["twitter"]["consumer_key"] - consumer_secret = config["twitter"]["consumer_secret"] - callback_url = url("login/twitter/callback") - auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url) - try: - redirect_url = auth.get_authorization_url() - except tweepy.TweepError: - logger.error('Twitter OAuth Error: Failed to get request token.', - exc_info=True) - return dict(error="Failed to get request token.") - user.save_request_token(auth.request_token) - return bottle.redirect(redirect_url) - except Exception: - logger.error("Error with Sign in with Twitter.", exc_info= True) + redirect_url = auth.get_authorization_url() + except tweepy.TweepError: + logger.error('Twitter OAuth Error: Failed to get request token.', + exc_info=True) + return dict(error="Failed to get request token.") + user.save_request_token(auth.request_token) + return bottle.redirect(redirect_url) @get('/login/twitter/callback') @@ -174,3 +171,5 @@ bottle.install(SessionPlugin('/')) if __name__ == '__main__': # testing only bottle.run(host='localhost', port=8080) +else: + application.catchall = False