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

Function update_token

src/api/admin.py:913–970  ·  view source on GitHub ↗

Update token - 使用ST自动刷新AT

(
    token_id: int,
    request: UpdateTokenRequest,
    token: str = Depends(verify_admin_token)
)

Source from the content-addressed store, hash-verified

911
912@router.put("/api/tokens/{token_id}")
913async def update_token(
914 token_id: int,
915 request: UpdateTokenRequest,
916 token: str = Depends(verify_admin_token)
917):
918 """Update token - 使用ST自动刷新AT"""
919 try:
920 # 先ST转AT
921 result = await token_manager.flow_client.st_to_at(request.st)
922 at = result["access_token"]
923 expires = result.get("expires")
924
925 # 解析过期时间
926 from datetime import datetime
927 at_expires = None
928 if expires:
929 try:
930 at_expires = datetime.fromisoformat(expires.replace('Z', '+00:00'))
931 except:
932 pass
933
934 # 更新token (包含AT、ST、AT过期时间、project_id和project_name)
935 await token_manager.update_token(
936 token_id=token_id,
937 st=request.st,
938 at=at,
939 at_expires=at_expires, # 🆕 更新AT过期时间
940 project_id=request.project_id,
941 project_name=request.project_name,
942 remark=request.remark,
943 captcha_proxy_url=request.captcha_proxy_url.strip() if request.captcha_proxy_url is not None else None,
944 extension_route_key=request.extension_route_key.strip() if request.extension_route_key is not None else None,
945 image_enabled=request.image_enabled,
946 video_enabled=request.video_enabled,
947 image_concurrency=request.image_concurrency,
948 video_concurrency=request.video_concurrency,
949 protocol_mode=request.protocol_mode,
950 google_cookies=request.google_cookies,
951 login_account=request.login_account,
952 login_password=request.login_password,
953 proxy_url=request.proxy_url,
954 auto_refresh_enabled=request.auto_refresh_enabled,
955 refresh_interval_minutes=request.refresh_interval_minutes
956 )
957
958 # 热更新并发限制,确保管理台修改立即生效
959 if concurrency_manager:
960 updated_token = await token_manager.get_token(token_id)
961 if updated_token:
962 await concurrency_manager.reset_token(
963 token_id,
964 image_concurrency=updated_token.image_concurrency,
965 video_concurrency=updated_token.video_concurrency
966 )
967
968 return {"success": True, "message": "Token更新成功"}
969 except Exception as e:
970 raise HTTPException(status_code=500, detail=str(e))

Callers

nothing calls this directly

Calls 4

st_to_atMethod · 0.80
reset_tokenMethod · 0.80
update_tokenMethod · 0.45
get_tokenMethod · 0.45

Tested by

no test coverage detected