diff options
Diffstat (limited to 'fbconnect/fb.py')
-rwxr-xr-x | fbconnect/fb.py | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/fbconnect/fb.py b/fbconnect/fb.py index 7aeda131..a1c3e424 100755 --- a/fbconnect/fb.py +++ b/fbconnect/fb.py @@ -2,7 +2,13 @@ from django.conf import settings from time import time from datetime import datetime from urllib import urlopen, urlencode -from json import load as load_json + +try: + from json import load as load_json +except: + from pjson import fread as load_json + +from models import FBAssociation import md5 import logging @@ -40,11 +46,12 @@ def get_user_data(cookies): } request_data['sig'] = generate_sig(request_data) - fb_response = load_json(urlopen(REST_SERVER, urlencode(request_data))) - return fb_response[0] + fb_response = urlopen(REST_SERVER, urlencode(request_data)) + print(fb_response) + return load_json(fb_response)[0] -def delete_cookies(): +def delete_cookies(response): API_KEY = settings.FB_API_KEY response.delete_cookie(API_KEY + '_user') @@ -60,11 +67,23 @@ def check_session_expiry(cookies): STATES = { 'FIRSTTIMER': 1, 'SESSIONEXPIRED': 2, + 'RETURNINGUSER': 3, + 'INVALIDSTATE': 4, } def get_user_state(request): - if settings.FB_API_KEY in request.COOKIES: + API_KEY = settings.FB_API_KEY + + if API_KEY in request.COOKIES: if check_cookies_signature(request.COOKIES): if check_session_expiry(request.COOKIES): - return STATES['FIRSTTIMER'] + try: + uassoc = FBAssociation.objects.get(fbuid=request.COOKIES[API_KEY + '_user']) + return (STATES['RETURNINGUSER'], uassoc.user) + except: + return (STATES['FIRSTTIMER'], get_user_data(request.COOKIES)) + else: + return (STATES['SESSIONEXPIRED'], None) + + return (STATES['INVALIDSTATE'], None) |