<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_authorization_url(self, acr_values=None, prompt=None, scope=None, custom_params=None):
 """Function to get the authorization url that can be opened in the browser for the user to provide authorization and authentication Parameters: * **acr_values (list, optional):
** acr values in the order of priority * **prompt (string, optional):
** prompt=login is required if you want to force alter current user session (in case user is already logged in from site1 and site2 constructs authorization request and want to force alter current user session) * **scope (list, optional):
** scopes required, takes the one provided during site registrations by default * **custom_params (dict, optional):
** Any custom arguments that the client wishes to pass on to the OP can be passed on as extra parameters to the function Returns: **string:** The authorization url that the user must access for authentication and authorization Raises: **OxdServerError:** If the oxd throws an error for any reason. """

        params = {"oxd_id": self.oxd_id}

        if scope and isinstance(scope, list):
            params["scope"] = scope

        if acr_values and isinstance(acr_values, list):
            params["acr_values"] = acr_values

        if prompt and isinstance(prompt, str):
            params["prompt"] = prompt

        if custom_params:
            params["custom_parameters"] = custom_params

        logger.debug("Sending command `get_authorization_url` with params %s",
                     params)
        response = self.msgr.request("get_authorization_url", **params)
        logger.debug("Received response: %s", response)

        if response['status'] == 'error':
            raise OxdServerError(response['data'])
        return response['data']['authorization_url']