MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / _do_refresh_at

Method _do_refresh_at

src/services/token_manager.py:612–685  ·  view source on GitHub ↗

执行 AT 刷新的核心逻辑 Args: token_id: Token ID st: Session Token Returns: True if refresh successful AND AT is valid, False otherwise

(self, token_id: int, st: str, token: Optional[Token] = None)

Source from the content-addressed store, hash-verified

610 return await task
611
612 async def _do_refresh_at(self, token_id: int, st: str, token: Optional[Token] = None) -> bool:
613 """执行 AT 刷新的核心逻辑
614
615 Args:
616 token_id: Token ID
617 st: Session Token
618
619 Returns:
620 True if refresh successful AND AT is valid, False otherwise
621 """
622 try:
623 debug_logger.log_info(f"[AT_REFRESH] Token {token_id}: 开始刷新AT...")
624
625 # 使用ST转AT
626 token = token or await self.db.get_token(token_id)
627 result = await (
628 self._st_to_at_for_token(token, st)
629 if token is not None
630 else self.flow_client.st_to_at(st)
631 )
632 new_at = result["access_token"]
633 expires = result.get("expires")
634
635 # 解析过期时间
636 new_at_expires = None
637 if expires:
638 try:
639 new_at_expires = datetime.fromisoformat(expires.replace('Z', '+00:00'))
640 except:
641 pass
642
643 # 更新数据库
644 await self.db.update_token(
645 token_id,
646 at=new_at,
647 at_expires=new_at_expires
648 )
649
650 debug_logger.log_info(f"[AT_REFRESH] Token {token_id}: AT刷新成功")
651 debug_logger.log_info(f" - 新过期时间: {new_at_expires}")
652
653 # 验证 AT 有效性:通过 get_credits 测试
654 try:
655 credits_result = await (
656 self._get_credits_for_token(token, new_at)
657 if token is not None
658 else self.flow_client.get_credits(new_at)
659 )
660 await self.db.update_token(
661 token_id,
662 credits=credits_result.get("credits", 0),
663 user_paygate_tier=credits_result.get("userPaygateTier"),
664 )
665 self._mark_at_valid(token_id)
666 debug_logger.log_info(f"[AT_REFRESH] Token {token_id}: AT 验证成功(余额: {credits_result.get('credits', 0)})")
667 record_token_refresh("at", "success")
668 return True
669 except Exception as verify_err:

Callers 1

_refresh_at_innerMethod · 0.95

Calls 11

_st_to_at_for_tokenMethod · 0.95
_mark_at_validMethod · 0.95
record_token_refreshFunction · 0.85
log_infoMethod · 0.80
st_to_atMethod · 0.80
get_creditsMethod · 0.80
log_warningMethod · 0.80
log_errorMethod · 0.80
get_tokenMethod · 0.45
update_tokenMethod · 0.45

Tested by

no test coverage detected