excel-toolkit/python_auth_runtime
ivanberry 98ca8a3965 refactor: 将 auth runtime 重构为可复用 Python 包
模式参考 ~/clawd/skills/_shared/auth-runtime (TypeScript):
- 创建 python_auth_runtime/ 作为独立 Python 包
- 其他 skill 可以通过 uv pip install 引用
- 支持三种使用方式:
  1. 本地包安装:uv pip install /path/to/python_auth_runtime
  2. 文件依赖:pyproject.toml 中引用
  3. 复制源码:直接复制 src/python_auth_runtime

包结构:
python_auth_runtime/
├── pyproject.toml          # 包配置
├── README.md               # 使用文档
└── src/python_auth_runtime/
    └── __init__.py         # 核心实现

功能:
- CLIENT_KEY 认证
- 令牌缓存(可配置 TTL)
- 自动刷新过期令牌
- 401/403 自动重试
- 从环境变量加载配置
2026-03-11 20:26:29 +08:00
..
src/python_auth_runtime refactor: 将 auth runtime 重构为可复用 Python 包 2026-03-11 20:26:29 +08:00
README.md refactor: 将 auth runtime 重构为可复用 Python 包 2026-03-11 20:26:29 +08:00
pyproject.toml refactor: 将 auth runtime 重构为可复用 Python 包 2026-03-11 20:26:29 +08:00

README.md

@clawd/auth-runtime-py

Python 版本的 OpenClaw Auth Runtime基于 ~/clawd/skills/_shared/auth-runtime 的 TypeScript 实现。

安装

方式 1: 作为本地包安装(推荐)

# 在具体 skill 的目录中
uv pip install /path/to/python_auth_runtime

方式 2: 作为文件依赖

pyproject.toml 中添加:

[project]
dependencies = [
    "python-auth-runtime-py @ file:///path/to/python_auth_runtime",
]

方式 3: 复制源码

直接复制 src/python_auth_runtime 到你的项目中:

cp -r /path/to/python_auth_runtime/src/python_auth_runtime ./your-skill/

使用方式

1. 设置环境变量

export CLIENT_KEY="your-client-key"
export AUTH_BASE="https://api-gw-test.yuanwei-lnc.com"  # 可选

2. 导入并使用

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

示例项目

# 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

# .env
CLIENT_KEY=your-client-key-here
AUTH_BASE=https://api-gw-test.yuanwei-lnc.com

然后在代码中加载:

from dotenv import load_dotenv
load_dotenv()  # 加载 .env 文件到环境变量

from python_auth_runtime import create_env_config
config = create_env_config()

许可证

MIT