def begin_external_authentication(request)
      # We don't have an email domain to work from.
      # Instead, we'll call each engine's authenticate_external method.
      # If one of them returns a user, then we return that value and skip further processing.
      auth_engines.each do |dom,engine|
        unless engine.nil?
          url = engine.begin_external_authentication(request)
          return url unless url.blank?
        end
      end
      nil
    end
def begin_external_authentication(request)
      # We don't have an email domain to work from.
      # Instead, we'll call each engine's authenticate_external method.
      # If one of them returns a user, then we return that value and skip further processing.
      auth_engines.each do |dom,engine|
        unless engine.nil?
          url = engine.begin_external_authentication(request)
          return url unless url.blank?
        end
      end
      nil
    end
The begin_external_authentication method takes a request object to determine if it should process a login
 or return nil.  If it decides to process authentication, it should return a URL to redirect to.