115 lines
2.7 KiB
Python
115 lines
2.7 KiB
Python
from fastapi import APIRouter, Depends, Request
|
||
from typing import Dict
|
||
from app.deps.auth_deps import get_valid_token, get_token_information, get_valid_ticket, get_ticket_information
|
||
from app.services.auth_service import generate_signature
|
||
|
||
router = APIRouter(prefix="/auth", tags=["认证"])
|
||
|
||
|
||
@router.get("/token")
|
||
async def get_token(
|
||
token: str = Depends(get_valid_token)
|
||
) -> Dict:
|
||
"""
|
||
获取access_token
|
||
"""
|
||
return {
|
||
"success": True,
|
||
"access_token": token,
|
||
"message": "获取token成功"
|
||
}
|
||
|
||
|
||
@router.get("/token/info")
|
||
async def get_token_info(
|
||
token_info: Dict = Depends(get_token_information)
|
||
) -> Dict:
|
||
"""
|
||
获取token的详细信息
|
||
包括获取时间、过期时间、剩余时间等
|
||
"""
|
||
return {
|
||
"success": True,
|
||
"data": token_info,
|
||
"message": "获取token信息成功"
|
||
}
|
||
|
||
|
||
@router.get("/ticket")
|
||
async def get_ticket(
|
||
ticket: str = Depends(get_valid_ticket)
|
||
) -> Dict:
|
||
"""
|
||
获取jsapi_ticket
|
||
"""
|
||
return {
|
||
"success": True,
|
||
"ticket": ticket,
|
||
"message": "获取ticket成功"
|
||
}
|
||
|
||
|
||
@router.get("/ticket/info")
|
||
async def get_ticket_info(
|
||
ticket_info: Dict = Depends(get_ticket_information)
|
||
) -> Dict:
|
||
"""
|
||
获取ticket的详细信息
|
||
包括获取时间、过期时间、剩余时间等
|
||
"""
|
||
return {
|
||
"success": True,
|
||
"data": ticket_info,
|
||
"message": "获取ticket信息成功"
|
||
}
|
||
|
||
|
||
@router.post("/signature")
|
||
async def get_signature(request: Request) -> Dict:
|
||
"""
|
||
生成应用签名
|
||
|
||
请求参数:
|
||
{
|
||
"url": "当前页面完整URL",
|
||
"timestamp": 时间戳(可选,秒),
|
||
"nonceStr": "随机字符串(可选)"
|
||
}
|
||
"""
|
||
try:
|
||
# 解析请求体
|
||
body = await request.json()
|
||
url = body.get("url")
|
||
|
||
if not url:
|
||
return {
|
||
"success": False,
|
||
"message": "缺少必要参数:url"
|
||
}
|
||
|
||
timestamp = body.get("timestamp")
|
||
nonce_str = body.get("nonceStr")
|
||
|
||
# 生成签名
|
||
signature_data = generate_signature(
|
||
url=url,
|
||
timestamp=timestamp,
|
||
nonce_str=nonce_str
|
||
)
|
||
|
||
return {
|
||
"success": True,
|
||
"data": {
|
||
"signature": signature_data["signature"],
|
||
"timestamp": signature_data["timestamp"],
|
||
"nonceStr": signature_data["nonceStr"]
|
||
},
|
||
"message": "签名生成成功"
|
||
}
|
||
|
||
except Exception as e:
|
||
return {
|
||
"success": False,
|
||
"message": f"生成签名失败: {str(e)}"
|
||
}
|