增加刷新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:
|
||||
logger.error(f"刷新巨量引擎token失败: oauth_id={oauth.id}, 错误信息: {data}")
|
||||
# refresh_token已失效
|
||||
if data.get("code") in [40103, 40107]:
|
||||
# refresh_token已失效或刷新失败,统一清理token
|
||||
if data.get("code") in [40103, 40107, 40000]:
|
||||
where_cond = UserOAuth.deleted_at.is_(None)
|
||||
if 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 = [row[0] for row in related_oauth_ids.all()]
|
||||
# 【改动2:失效直接删除Redis缓存,不再写入空值】
|
||||
for related_id in related_oauth_ids:
|
||||
await _delete_redis_token(related_id)
|
||||
return
|
||||
|
||||
@@ -136,7 +136,13 @@ class DouyinRequest:
|
||||
now_beijing = datetime.now(tz=BEIJING_TZ)
|
||||
|
||||
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)
|
||||
if oauth_data.appid:
|
||||
where_cond = where_cond & (UserOAuth.appid == oauth_data.appid)
|
||||
@@ -191,6 +197,11 @@ class DouyinRequest:
|
||||
return token
|
||||
|
||||
# =========【核心业务规则实现:判断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:
|
||||
# RefreshToken过期 → 授权彻底失效,清理Redis脏缓存
|
||||
await self._delete_redis_token(oauth_id)
|
||||
@@ -242,6 +253,7 @@ class DouyinRequest:
|
||||
|
||||
code = data.get('code', 0)
|
||||
if code != 0:
|
||||
#刷新token
|
||||
raise ValueError(f"刷新access_token失败,接口返回:{data}")
|
||||
|
||||
data = data.get('data', {})
|
||||
|
||||
Reference in New Issue
Block a user