Example #1
0
 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)
Example #2
0
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)