def get_facebook_proxy(self, request): return facebook.create_facebook_proxy(request, request.build_absolute_uri(self.get_facebook_login_url(request)))
def get_facebook_proxy(self, request): return facebook.create_facebook_proxy( request, request.build_absolute_uri(self.get_facebook_login_url()))
def facebook_login(request, template_name='facebook/login.html', connect_template_name='facebook/login.html', fail_template_name='facebook/failed.html', extra_context=None, form_class=NoPasswordUserCreationForm, connect_form_class=ConnectUserForm, success_url=settings.LOGIN_REDIRECT_URL): """ Facebook callback view """ fb = facebook.create_facebook_proxy(request, request.build_absolute_uri(reverse('facebook-login'))) if not fb.authorized(): ctx = extra_context or {} ctx.update({ 'message': _('We couldn\'t validate your Facebook credentials.'), }) return render_to_response(fail_template_name, RequestContext(request, ctx)) if request.user.is_authenticated(): form_class = connect_form_class user = request.user else: user = None if request.method == 'POST': form = form_class(data=request.POST) if form.is_valid(): maybe_new_user = form.save() user = user or maybe_new_user #;) fb.get_or_create_local_profile(user) user = authenticate(facebook_uid=fb.uid) fbprofile = fb.get_profile() if user: signals.facebook_connect.send(sender=facebook_login, instance=user, fbprofile=fbprofile, graph=fb.graph) login(request, user) return redirect(success_url) else: # try to authenticate previously connected facebook user # using facebook User ID user = authenticate(facebook_uid=fb.uid) if user: # user authenticated signals.facebook_login.send(sender=facebook_login, instance=user, graph=fb.graph) login(request, user) return redirect(success_url) fbprofile = fb.get_profile() initials=dict((k, v) for (k, v) in fbprofile.iteritems() if k in ('first_name', 'last_name', 'email')) potential_username=fbprofile.get('username') if not potential_username: try: potential_username=u'-'.join(fbprofile.get('name').split()) except AttributeError, e: logger.error('Error guessing username from fbprofile: %s' % fbprofile) potential_username=u'fb_%s' % fbprofile['id'] username=unidecode(potential_username.lower().replace('.', '-')) sufix=0 try_username=username while True: try: user=User.objects.get(username=try_username) except User.DoesNotExist: username=try_username break else: sufix+=1 try_username=username + '-' + str(sufix) initials.update({'username': username}) form = form_class(initial=initials)