Initializes the oauth authorization flow, getting the
        authorization url that the user must approve.

        :param list[str] requested_scopes: list of scopes to request access for
        :param str redirect_uri: redirect url configured in registered app
        :param kwargs: allow to pass unused params in conjunction with Connection
        :return: authorization url
        :rtype: str

def get_authorization_url(self, requested_scopes=None,
                              redirect_uri=OAUTH_REDIRECT_URL, **kwargs):
        """ Initializes the oauth authorization flow, getting the
        authorization url that the user must approve.

        :param list[str] requested_scopes: list of scopes to request access for
        :param str redirect_uri: redirect url configured in registered app
        :param kwargs: allow to pass unused params in conjunction with Connection
        :return: authorization url
        :rtype: str
        """

        # TODO: remove this warning in future releases
        if redirect_uri == OAUTH_REDIRECT_URL:
            warnings.warn('The default redirect uri was changed in version 1.1.4. to'
                          ' "https://login.microsoftonline.com/common/oauth2/nativeclient".'
                          ' You may have to change the registered app "redirect uri" or pass here the old "redirect_uri"',
                          DeprecationWarning)

        client_id, client_secret = self.auth

        if requested_scopes:
            scopes = requested_scopes
        elif self.scopes is not None:
            scopes = self.scopes
        else:
            raise ValueError('Must provide at least one scope')

        self.session = oauth = OAuth2Session(client_id=client_id,
                                             redirect_uri=redirect_uri,
                                             scope=scopes)
        self.session.proxies = self.proxy
        if self.request_retries:
            retry = Retry(total=self.request_retries, read=self.request_retries,
                          connect=self.request_retries,
                          backoff_factor=RETRIES_BACKOFF_FACTOR,
                          status_forcelist=RETRIES_STATUS_LIST)
            adapter = HTTPAdapter(max_retries=retry)
            self.session.mount('http://', adapter)
            self.session.mount('https://', adapter)

        # TODO: access_type='offline' has no effect according to documentation
        #  This is done through scope 'offline_access'.
        auth_url, state = oauth.authorization_url(
            url=self._oauth2_authorize_url, access_type='offline')

        return auth_url