excel-toolkit/python_auth_runtime/README.md

164 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# @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