fix: use POST /api/token/{id}/key to get full unmasked key for new NewAPI v0.13.2
New version of NewAPI masks token keys with asterisks in list/detail endpoints. Added get_token_key() method that calls the dedicated endpoint to retrieve the full key, and integrated it into get_or_create_token() flow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
180e569b09
commit
a8f643a10c
@ -338,6 +338,20 @@ class NewAPIProxy:
|
|||||||
new_api_user_id=new_api_user_id
|
new_api_user_id=new_api_user_id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def get_token_key(
|
||||||
|
self,
|
||||||
|
cookies: Dict[str, str],
|
||||||
|
new_api_user_id: int,
|
||||||
|
token_id: int
|
||||||
|
) -> Dict[str, Any]:
|
||||||
|
"""Get the full unmasked token key by token ID"""
|
||||||
|
return await self._request(
|
||||||
|
"POST",
|
||||||
|
f"/api/token/{token_id}/key",
|
||||||
|
cookies=cookies,
|
||||||
|
new_api_user_id=new_api_user_id
|
||||||
|
)
|
||||||
|
|
||||||
async def get_or_create_token(
|
async def get_or_create_token(
|
||||||
self,
|
self,
|
||||||
cookies: Dict[str, str],
|
cookies: Dict[str, str],
|
||||||
@ -351,10 +365,14 @@ class NewAPIProxy:
|
|||||||
# data 格式: {'page': 1, 'page_size': 100, 'total': 4, 'items': [...]}
|
# data 格式: {'page': 1, 'page_size': 100, 'total': 4, 'items': [...]}
|
||||||
tokens = tokens_result["data"].get("items", [])
|
tokens = tokens_result["data"].get("items", [])
|
||||||
if isinstance(tokens, list) and len(tokens) > 0:
|
if isinstance(tokens, list) and len(tokens) > 0:
|
||||||
# 返回第一个可用的令牌
|
token = tokens[0]
|
||||||
|
# Fetch the full unmasked key via dedicated endpoint
|
||||||
|
key_result = await self.get_token_key(cookies, new_api_user_id, token["id"])
|
||||||
|
if key_result.get("success") and key_result.get("data"):
|
||||||
|
token["key"] = key_result["data"]["key"]
|
||||||
return {
|
return {
|
||||||
"success": True,
|
"success": True,
|
||||||
"data": tokens[0],
|
"data": token,
|
||||||
"message": "使用现有令牌"
|
"message": "使用现有令牌"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -370,9 +388,14 @@ class NewAPIProxy:
|
|||||||
if tokens_result.get("success") and tokens_result.get("data"):
|
if tokens_result.get("success") and tokens_result.get("data"):
|
||||||
tokens = tokens_result["data"].get("items", [])
|
tokens = tokens_result["data"].get("items", [])
|
||||||
if isinstance(tokens, list) and len(tokens) > 0:
|
if isinstance(tokens, list) and len(tokens) > 0:
|
||||||
|
token = tokens[0]
|
||||||
|
# Fetch the full unmasked key
|
||||||
|
key_result = await self.get_token_key(cookies, new_api_user_id, token["id"])
|
||||||
|
if key_result.get("success") and key_result.get("data"):
|
||||||
|
token["key"] = key_result["data"]["key"]
|
||||||
return {
|
return {
|
||||||
"success": True,
|
"success": True,
|
||||||
"data": tokens[0],
|
"data": token,
|
||||||
"message": "已创建新令牌"
|
"message": "已创建新令牌"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user