<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _basic_login(self):
 """Obtain a new access token from the vendor. First, try using the refresh_token, if one is available, otherwise authenticate using the user credentials. """

        _LOGGER.debug("No/Expired/Invalid access_token, re-authenticating...")
        self.access_token = self.access_token_expires = None

        if self.refresh_token:
            _LOGGER.debug("Trying refresh_token...")
            credentials = {'grant_type': "refresh_token",
                           'scope': "EMEA-V1-Basic EMEA-V1-Anonymous",
                           'refresh_token': self.refresh_token}

            try:
                self._obtain_access_token(credentials)
            except (requests.HTTPError, KeyError, ValueError):
                _LOGGER.warning(
                    "Invalid refresh_token, will try user credentials.")
                self.refresh_token = None

        if not self.refresh_token:
            _LOGGER.debug("Trying user credentials...")
            credentials = {'grant_type': "password",
                           'scope': "EMEA-V1-Basic EMEA-V1-Anonymous "
                                    "EMEA-V1-Get-Current-User-Account",
                           'Username': self.username,
                           'Password': self.password}

            self._obtain_access_token(credentials)

        _LOGGER.debug("refresh_token = %s", self.refresh_token)
        _LOGGER.debug("access_token = %s", self.access_token)
        _LOGGER.debug("access_token_expires = %s",
                      self.access_token_expires.strftime("%Y-%m-%d %H:%M:%S"))