code: def post(self, request):
          
  
          if request.user.is_authenticated():
              return self.error_to_response(request, dict(
                  error=_("You are already logged in.")))
  
          try:
              user, profile, client = self.get_session_data(request)
          except KeyError:
              return self.error_to_response(request, dict(
                  error=_("A social profile is missing from your session.")))
          
          form = self.get_form()(request.POST, request.FILES,
              initial=self.get_initial_data(request, user, profile, client))
          
          if not form.is_valid():
              additional_context = self.get_context(request, user, profile, client)
              return self.render_to_response(dict({'form': form}, **additional_context))
          
          user, profile = form.save(request, user, profile, client)
          
          user = profile.authenticate()
          
          self.send_connect_signal(request, user, profile, client)
          
          self.login(request, user)
          
          self.send_login_signal(request, user, profile, client)
          
          self.delete_session_data(request)
          
          return HttpResponseRedirect(self.get_next(request))
docs: Save the user and profile, login and send the right signals.