# 代码示例

以下文件可以下载后在你自己的服务端运行。均使用环境变量，不包含真实密钥。

| 示例 | 下载 | 环境 |
| --- | --- | --- |
| API 客户端与创建邀请 | [client.mjs](/examples/client.mjs) | Node.js 22+ |
| API 客户端 | [client.py](/examples/client.py) | Python 3.11+，标准库 |
| Java 插件服务端调用 | [ScreenshareExample.java](/examples/ScreenshareExample.java) | Java 17+ |
| 验签与 SQLite 收件箱 | [webhook-server.mjs](/examples/webhook-server.mjs) | Node.js 24+ |
| Python 验签函数 | [verify_webhook.py](/examples/verify_webhook.py) | Python 3.11+，标准库 |
| 本地合成 API | [mock-server.mjs](/examples/mock-server.mjs) | Node.js 22+ |

## JavaScript 调用

```bash
node client.mjs me
node client.mjs invite minecraft YOUR_PERSISTED_IDEMPOTENCY_KEY
```

环境变量为 `SCREENSHARE_API_KEY` 和 `SCREENSHARE_PARTNER_ID`。创建邀请时务必传入事先保存的随机请求编号；示例不会在每次重试时自动换编号。

示例不会在终端打印完整邀请链接。结果需要发送给玩家时，由你的应用从返回对象中读取 `data.link`，在经过授权的私密通道分发。

## Python

```bash
python client.py
```

输出 `/v1/me` 的凭证元数据。`screenshare()` 可由你自己的服务端导入。遇到错误会返回 HTTP 状态和结构化错误；不要把包含 Authorization 的完整请求对象写入异常日志。

## Java

```bash
javac ScreenshareExample.java
java ScreenshareExample
```

展示标准库 HttpClient、超时和禁止重定向。使用插件后台执行器运行 HTTP 请求，不要阻塞 Minecraft 主服务器线程。正式应用可使用自己已有的 JSON 库解析响应。

## Webhook 接收示例

```bash
export SCREENSHARE_WEBHOOK_SECRET='YOUR_FULL_whsec_SECRET'
export SCREENSHARE_PARTNER_ID='YOUR_PARTNER_ID'
node webhook-server.mjs
```

服务监听本机 8080，请通过你控制的公网 HTTPS 443 反向代理接入。示例先验签和核对组织，再将业务事件写入 SQLite 收件箱后响应 204。验证事件在验签后回显 challenge。收件箱不是完整业务系统；需要接入你的持久任务处理器。

## 本地模拟

```bash
node mock-server.mjs
```

模拟服务监听 `127.0.0.1:4180`，只接受假密钥 `Bearer test-local-only`。它提供 `/v1/me`、邀请创建的幂等及冲突分支、模拟 429 和模拟记录未找到。测试时单独使用本地配置，不要把生产密钥传给模拟服务，也不要把本地地址配置成生产 Webhook。
