summaryrefslogtreecommitdiffstats
path: root/fbconnect/fb.py
diff options
context:
space:
mode:
Diffstat (limited to 'fbconnect/fb.py')
-rwxr-xr-xfbconnect/fb.py31
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)