Initialize the `app` for use with this :class:`~PyBankID`. This is
        called automatically if `app` is passed to :meth:`~PyBankID.__init__`.

        The app is configured according to the configuration variables
        ``PREFIX_CERT_PATH``, ``PREFIX_KEY_PATH`` and ``PREFIX_TEST_SERVER``,
         where "PREFIX" defaults to "PYBANKID".

        :param flask.Flask app: the application to configure for use with
           this :class:`~PyBankID`
        :param str config_prefix: determines the set of configuration
           variables used to configure this :class:`~PyBankID`.

def init_app(self, app, config_prefix="PYBANKID"):
        """Initialize the `app` for use with this :class:`~PyBankID`. This is
        called automatically if `app` is passed to :meth:`~PyBankID.__init__`.

        The app is configured according to the configuration variables
        ``PREFIX_CERT_PATH``, ``PREFIX_KEY_PATH`` and ``PREFIX_TEST_SERVER``,
         where "PREFIX" defaults to "PYBANKID".

        :param flask.Flask app: the application to configure for use with
           this :class:`~PyBankID`
        :param str config_prefix: determines the set of configuration
           variables used to configure this :class:`~PyBankID`.

        """
        if "pybankid" not in app.extensions:
            app.extensions["pybankid"] = {}

        if config_prefix in app.extensions["pybankid"]:
            raise Exception('duplicate config_prefix "{0}"'.format(config_prefix))

        app.config.setdefault(self._config_key("CERT_PATH"), "")
        app.config.setdefault(self._config_key("KEY_PATH"), "")
        app.config.setdefault(self._config_key("TEST_SERVER"), False)

        # Adding the three url endpoints.
        app.add_url_rule(
            "/authenticate/<personal_number>", view_func=self._authenticate
        )
        app.add_url_rule("/sign/<personal_number>", view_func=self._sign)
        app.add_url_rule("/collect/<order_ref>", view_func=self._collect)

        if hasattr(app, "teardown_appcontext"):
            app.teardown_appcontext(self.teardown)
        else:
            app.teardown_request(self.teardown)