# @clawd/auth-runtime-py Python 版本的 OpenClaw Auth Runtime,基于 `~/clawd/skills/_shared/auth-runtime` 的 TypeScript 实现。 ## 安装 ### 方式 1: 作为本地包安装(推荐) ```bash # 在具体 skill 的目录中 uv pip install /path/to/python_auth_runtime ``` ### 方式 2: 作为文件依赖 在 `pyproject.toml` 中添加: ```toml [project] dependencies = [ "python-auth-runtime-py @ file:///path/to/python_auth_runtime", ] ``` ### 方式 3: 复制源码 直接复制 `src/python_auth_runtime` 到你的项目中: ```bash cp -r /path/to/python_auth_runtime/src/python_auth_runtime ./your-skill/ ``` ## 使用方式 ### 1. 设置环境变量 ```bash export CLIENT_KEY="your-client-key" export AUTH_BASE="https://api-gw-test.yuanwei-lnc.com" # 可选 ``` ### 2. 导入并使用 ```python from python_auth_runtime import create_env_config, get_access_token, request_api_with_auto_refresh # 创建配置(自动从环境变量加载) config = create_env_config() # 获取访问令牌(带缓存) token = get_access_token(dry_run=False, config=config) # 发送 API 请求(自动处理令牌刷新) response = request_api_with_auto_refresh( method="POST", url=f"{config.auth_base}/ecom/tasks/scrape", dry_run=False, config=config, body={"url": "https://detail.1688.com/offer/123.html"}, ) if response.status == 200: import json data = json.loads(response.body) print("商品价格:", data["price"]) ``` ## API 参考 ### 配置 #### `create_env_config() -> EnvConfig` 从环境变量创建配置: | 环境变量 | 默认值 | 说明 | |---------|--------|------| | `AUTH_BASE` | `https://api-gw-test.yuanwei-lnc.com` | 认证基础 URL | | `CLIENT_KEY` | **必需** | 客户端密钥 | | `AUTH_CACHE_DIR` | `/tmp/skill-auth-cache` | 缓存目录 | | `AUTH_MIN_TTL_SEC` | `60` | 最小令牌 TTL(秒) | ### 令牌管理 #### `get_access_token(dry_run, config) -> str` 获取访问令牌(带缓存) #### `refresh_access_token(dry_run, config) -> str` 刷新访问令牌(绕过缓存) ### API 请求 #### `request_api(method, url, auth_token, body) -> ApiResponse` 发送 HTTP 请求 #### `request_api_with_auto_refresh(method, url, dry_run, config, body) -> ApiResponse` 发送 API 请求并自动刷新令牌 ## 与 TypeScript 版本对比 | 特性 | TypeScript | Python | |------|-----------|--------| | 包名 | `@clawd/auth-runtime` | `@clawd/auth-runtime-py` | | 安装方式 | `bun add file:../_shared/auth-runtime` | `uv pip install /path/to/python_auth_runtime` | | 导入 | `import { ... } from '@clawd/auth-runtime'` | `from python_auth_runtime import ...` | | HTTP 客户端 | `fetch()` | `requests` | ## 示例项目 ```python # your-skill/main.py from python_auth_runtime import create_env_config, request_api_with_auto_refresh import os def main(): # 从环境变量加载 CLIENT_KEY config = create_env_config() # 调用 1688 API response = request_api_with_auto_refresh( method="POST", url=f"{config.auth_base}/ecom/tasks/scrape", dry_run=False, config=config, body={"url": "https://detail.1688.com/offer/123.html"}, ) if response.status == 200: print("成功:", response.body) else: print("失败:", response.status, response.body) if __name__ == "__main__": main() ``` ## 环境变量配置 在项目根目录创建 `.env` 文件(不提交到 git): ```bash # .env CLIENT_KEY=your-client-key-here AUTH_BASE=https://api-gw-test.yuanwei-lnc.com ``` 然后在代码中加载: ```python from dotenv import load_dotenv load_dotenv() # 加载 .env 文件到环境变量 from python_auth_runtime import create_env_config config = create_env_config() ``` ## 许可证 MIT