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)
def verify_uni_email(request): fb_user = UserFacebook() verification_status = fb_user.uni_email_verifier(request.POST['uni_email']) return HttpResponse(verification_status)