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)}" }