def process_request(self, request): if 'next' in request.GET: request.session['login_redirect_url'] = request.GET['next'] state = request.GET.get('state', '') # Check if request is from Facebook if state == 'facebook': oauth_code = request.GET.get('code', '') if oauth_code != '': redirect_uri = get_domain(request) + '/' access_token, expires = get_access_token_expire(oauth_code, redirect_uri) # Store access token in session request.session['facebook_access_token'] = access_token request.session['facebook_expires'] = expires user_data = get_facebook_user_data(access_token) if user_data is not None: if request.user.is_authenticated(): unbind_facebook_account(user_data) bind_facebook_account(request.user, user_data) else: user = facebook_connect(user_data) instant_login(request, user) if 'login_redirect_url' in request.session: login_redirect_url = request.session['login_redirect_url'] + '#/' else: login_redirect_url = '/#/' return HttpResponsePermanentRedirect(login_redirect_url)
def facebook_login(request): login_link = 'https://www.facebook.com/dialog/oauth?' + urllib.urlencode( { 'client_id': settings.FACEBOOK_APP_ID, 'redirect_uri': get_domain(request) + '/', 'response_type': 'code', 'scope': 'email', 'state': 'facebook', } ) return HttpResponseRedirect(login_link)