def METHOD_NAME(self, username, password):
    token_response = self._download_json(
        self._OAUTH_URL,
        None, 'Obtaining token', errnote='Unable to obtain token', data=urlencode_postdata({
            'affiliate': 'none',
            'grant_type': 'device',
            'device_vendor': 'unknown',
            'app_id': 'dch.webapp',
            'app_version': '1.0.0',
            'client_secret': '2ySLN+2Fwb',
        }), headers={
            'Content-Type': 'application/x-www-form-urlencoded',
        })
    self._ACCESS_TOKEN = token_response['access_token']
    try:
        self._download_json(
            self._OAUTH_URL,
            None, note='Logging in', errnote='Unable to login', data=urlencode_postdata({
                'grant_type': 'password',
                'username': username,
                'password': password,
            }), headers={
                'Content-Type': 'application/x-www-form-urlencoded',
                'Referer': 'https://www.digitalconcerthall.com',
                'Authorization': f'Bearer {self._ACCESS_TOKEN}'
            })
    except ExtractorError:
        self.raise_login_required(msg='Login info incorrect')