handle invalidated (not expired) refresh tokens

Authored by: bashonly
This commit is contained in:
bashonly
2025-05-26 18:28:00 -05:00
parent dc1fd5cd0b
commit 8c2d740997
+11
View File
@@ -109,6 +109,7 @@ class WeverseBaseIE(InfoExtractor):
if self._is_logged_in: if self._is_logged_in:
headers['Authorization'] = f'Bearer {self._oauth_tokens[self._ACCESS_TOKEN_KEY]}' headers['Authorization'] = f'Bearer {self._oauth_tokens[self._ACCESS_TOKEN_KEY]}'
try:
response = self._download_json( response = self._download_json(
f'{self._ACCOUNT_API_BASE}/api/v1/token/refresh', None, f'{self._ACCOUNT_API_BASE}/api/v1/token/refresh', None,
'Refreshing access token', 'Unable to refresh access token', 'Refreshing access token', 'Unable to refresh access token',
@@ -116,6 +117,16 @@ class WeverseBaseIE(InfoExtractor):
data=json.dumps({ data=json.dumps({
'refreshToken': self._oauth_tokens[self._REFRESH_TOKEN_KEY], 'refreshToken': self._oauth_tokens[self._REFRESH_TOKEN_KEY],
}, separators=(',', ':')).encode()) }, separators=(',', ':')).encode())
except ExtractorError as e:
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
self._oauth_tokens.clear()
if self._oauth_cache_key == 'cookies':
self.cookiejar.clear(domain='.weverse.io', path='/', name=self._ACCESS_TOKEN_KEY)
self.cookiejar.clear(domain='.weverse.io', path='/', name=self._REFRESH_TOKEN_KEY)
else:
self.cache.store(self._NETRC_MACHINE, self._oauth_cache_key, self._oauth_tokens)
self._report_login_error('expired_refresh_token')
raise
self._oauth_tokens.update(traverse_obj(response, { self._oauth_tokens.update(traverse_obj(response, {
self._ACCESS_TOKEN_KEY: ('accessToken', {str}, {require('access token')}), self._ACCESS_TOKEN_KEY: ('accessToken', {str}, {require('access token')}),