예제 #1
0
파일: views.py 프로젝트: shafy/profster
def connect_fb(request):

    #if not logged in:
    if not 'code' in request.GET:
        #build url
        request.session['state'] = md5.new(os.urandom(32)).hexdigest()
        
        dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" + settings.FACEBOOK_APP_ID + "&redirect_uri=" + settings.FACEBOOK_URI + "&state=" + request.session['state'] + "&scope=email"

        return HttpResponseRedirect(dialog_url)
    else:
        if request.session['state'] and (request.session['state'] == request.GET['state']):
            #if state is the same as the one we sent above, proceed
            #get access token with obtained code (get param)
            token_url = "https://graph.facebook.com/oauth/access_token?" + "client_id=" + settings.FACEBOOK_APP_ID + "&redirect_uri=" + settings.FACEBOOK_URI + "&client_secret=" + settings.FACEBOOK_API_SECRET + "&code=" + request.GET['code']
            url_content = urllib.urlopen(token_url)
            url_content_raw = url_content.read()
            #get access token
            url_content_splitted = url_content_raw.split('&')
            access_token = url_content_splitted[0].split('=')

            access_token = access_token[1]
            #also put token to session variable
            request.session['token'] = access_token

            #call method to save new user entry or update if not initial fb connect and log user in
            fb_user = UserFacebook()
            user_data = fb_user.save_data(access_token)
            email = user_data['email']
            request.session['friends_list'] = user_data['friends_list']
            verification_status = fb_user.uni_email_verifier(email)

            if verification_status == 1: # meaning, the user has a valid university email address in fb account
                #login user
                user = User.objects.get(username=email)
                user.backend = 'django.contrib.auth.backends.ModelBackend'
                login(request, user)

                redirect_to = '/'
            else:
                #deactivate user account
                user = User.objects.get(email=email)
                user.is_active = False
                user.save()
                #add current email to other emial field
                userprofile = UserProfile.objects.get(user=user)
                userprofile.other_email = email
                userprofile.save()
                #save user to session
                request.session['user'] = user
                #redirect to uni email entry form
                redirect_to = '/uni_email_needed/'

            return HttpResponseRedirect(redirect_to)
예제 #2
0
파일: views.py 프로젝트: shafy/profster
def verify_uni_email(request):
    fb_user = UserFacebook()
    verification_status = fb_user.uni_email_verifier(request.POST['uni_email'])
    return HttpResponse(verification_status)