@classmethod
def getUrl(cls, state):
    """
        Return the URL to start the OAuth2 authentication flow with an external
        provider.

        This abstract function must be reimplemented by each provider.

        :param state: A unique string, used to prevent CSRF and store other
        state information. This string should not be URL-encoded (that must be
        done in this method).
        :return: An external absolute URL to the start point for this provider's
        OAuth2 flow.
        """
    raise NotImplementedError()
