Skip to content

Commit

Permalink
Improve handling of iframe applications - get session key/uid from GE…
Browse files Browse the repository at this point in the history
…T if not in session if internal=False. Also ensure cookies expire properly.
  • Loading branch information
danielroseman committed Sep 27, 2009
1 parent 95fa6c3 commit 1ba089c
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions facebook/djangofb/__init__.py
@@ -1,5 +1,5 @@
import re

import datetime
import facebook

from django.http import HttpResponse, HttpResponseRedirect
Expand Down Expand Up @@ -205,12 +205,19 @@ def __init__(self, api_key=None, secret_key=None, app_name=None, callback_path=N

def process_request(self, request):
_thread_locals.facebook = request.facebook = Facebook(self.api_key, self.secret_key, app_name=self.app_name, callback_path=self.callback_path, internal=self.internal, proxy=self.proxy)
if not self.internal and 'facebook_session_key' in request.session and 'facebook_user_id' in request.session:
request.facebook.session_key = request.session['facebook_session_key']
request.facebook.uid = request.session['facebook_user_id']
if not self.internal:
if 'fb_sig_session_key' in request.GET and 'fb_sig_user' in request.GET:
request.facebook.session_key = request.session['facebook_session_key'] = request.GET['fb_sig_session_key']
request.facebook.uid = request.session['fb_sig_user'] = request.GET['fb_sig_user']
elif request.session.get('facebook_session_key', None) and request.session.get('facebook_user_id', None):
request.facebook.session_key = request.session['facebook_session_key']
request.facebook.uid = request.session['facebook_user_id']

def process_response(self, request, response):
if not self.internal and request.facebook.session_key and request.facebook.uid:
request.session['facebook_session_key'] = request.facebook.session_key
request.session['facebook_user_id'] = request.facebook.uid
if request.facebook.session_key_expires:
expiry = datetime.datetime.fromtimestamp(request.facebook.session_key_expires)
request.session.set_expiry(expiry)
return response

0 comments on commit 1ba089c

Please sign in to comment.