增加刷新token为空判断
This commit is contained in:
@@ -73,8 +73,8 @@ async def refresh_juliang_token(oauth: UserOAuth, app: UserOAuthApp, db: AsyncSe
|
|||||||
|
|
||||||
if data.get("code") != 0:
|
if data.get("code") != 0:
|
||||||
logger.error(f"刷新巨量引擎token失败: oauth_id={oauth.id}, 错误信息: {data}")
|
logger.error(f"刷新巨量引擎token失败: oauth_id={oauth.id}, 错误信息: {data}")
|
||||||
# refresh_token已失效
|
# refresh_token已失效或刷新失败,统一清理token
|
||||||
if data.get("code") in [40103, 40107]:
|
if data.get("code") in [40103, 40107, 40000]:
|
||||||
where_cond = UserOAuth.deleted_at.is_(None)
|
where_cond = UserOAuth.deleted_at.is_(None)
|
||||||
if oauth.appid:
|
if oauth.appid:
|
||||||
where_cond = where_cond & (UserOAuth.appid == oauth.appid)
|
where_cond = where_cond & (UserOAuth.appid == oauth.appid)
|
||||||
@@ -95,7 +95,6 @@ async def refresh_juliang_token(oauth: UserOAuth, app: UserOAuthApp, db: AsyncSe
|
|||||||
|
|
||||||
related_oauth_ids = await db.execute(select(UserOAuth.id).where(where_cond))
|
related_oauth_ids = await db.execute(select(UserOAuth.id).where(where_cond))
|
||||||
related_oauth_ids = [row[0] for row in related_oauth_ids.all()]
|
related_oauth_ids = [row[0] for row in related_oauth_ids.all()]
|
||||||
# 【改动2:失效直接删除Redis缓存,不再写入空值】
|
|
||||||
for related_id in related_oauth_ids:
|
for related_id in related_oauth_ids:
|
||||||
await _delete_redis_token(related_id)
|
await _delete_redis_token(related_id)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -136,7 +136,13 @@ class DouyinRequest:
|
|||||||
now_beijing = datetime.now(tz=BEIJING_TZ)
|
now_beijing = datetime.now(tz=BEIJING_TZ)
|
||||||
|
|
||||||
if force_refresh:
|
if force_refresh:
|
||||||
# 强制刷新:清空同条件下所有账号缓存与数据库token
|
# 强制刷新:先检查refresh_token是否为空
|
||||||
|
if not oauth_data.refresh_token:
|
||||||
|
# RefreshToken为空 → 授权已失效,清理Redis脏缓存
|
||||||
|
await self._delete_redis_token(oauth_id)
|
||||||
|
raise ValueError("授权已过期,请重新授权登录")
|
||||||
|
|
||||||
|
# 清空同条件下所有账号缓存与数据库token
|
||||||
where_cond = UserOAuth.deleted_at.is_(None)
|
where_cond = UserOAuth.deleted_at.is_(None)
|
||||||
if oauth_data.appid:
|
if oauth_data.appid:
|
||||||
where_cond = where_cond & (UserOAuth.appid == oauth_data.appid)
|
where_cond = where_cond & (UserOAuth.appid == oauth_data.appid)
|
||||||
@@ -191,6 +197,11 @@ class DouyinRequest:
|
|||||||
return token
|
return token
|
||||||
|
|
||||||
# =========【核心业务规则实现:判断RefreshToken是否过期】=========
|
# =========【核心业务规则实现:判断RefreshToken是否过期】=========
|
||||||
|
if not oauth_data.refresh_token:
|
||||||
|
# RefreshToken为空 → 授权已失效,清理Redis脏缓存
|
||||||
|
await self._delete_redis_token(oauth_id)
|
||||||
|
raise ValueError("授权已过期,请重新授权登录")
|
||||||
|
|
||||||
if oauth_data.refresh_token_expired and oauth_data.refresh_token_expired < now_beijing:
|
if oauth_data.refresh_token_expired and oauth_data.refresh_token_expired < now_beijing:
|
||||||
# RefreshToken过期 → 授权彻底失效,清理Redis脏缓存
|
# RefreshToken过期 → 授权彻底失效,清理Redis脏缓存
|
||||||
await self._delete_redis_token(oauth_id)
|
await self._delete_redis_token(oauth_id)
|
||||||
@@ -242,6 +253,7 @@ class DouyinRequest:
|
|||||||
|
|
||||||
code = data.get('code', 0)
|
code = data.get('code', 0)
|
||||||
if code != 0:
|
if code != 0:
|
||||||
|
#刷新token
|
||||||
raise ValueError(f"刷新access_token失败,接口返回:{data}")
|
raise ValueError(f"刷新access_token失败,接口返回:{data}")
|
||||||
|
|
||||||
data = data.get('data', {})
|
data = data.get('data', {})
|
||||||
|
|||||||
Reference in New Issue
Block a user