Sscenelet
DEVELOPER DOCS

Scenelet SDK

把这个轻量 SDK 嵌入你的浏览器插件或 Web 应用。它用官方 Scenelet 账户为你的用户登录(OAuth 2.0 + PKCE),并在每次调用功能前按点数余额放行。

1. 安装

# npm
npm install @scenelet/sdk

# CDN
<script src="https://api.scenelet.com/sdk/v1/scenelet-sdk.umd.js"></script>

2. 登录(OAuth 2.0 + PKCE)

loginViaPopup 会弹出官方 Scenelet 登录窗口,用户授权后即返回。你自己域名下的回调页只需调用 completePopupCallback()。桌面端或服务端等无法弹窗的场景,请改用 buildAuthorizeUrl() → 打开浏览器 → exchangeCode()。

import { Scenelet } from '@scenelet/sdk';

const sc = new Scenelet({
  appKey: 'app_xxxxxxx',
  clientId: 'cli_xxxxxxx', // from your Developer apps dashboard
});

// Opens the official Scenelet login in a popup (Authorization Code + PKCE)
// and resolves once the user approves — the token is stored for you.
await sc.loginViaPopup({ redirectUri: 'https://yourapp.com/oauth/callback' });

// …on your redirect page (https://yourapp.com/oauth/callback):
Scenelet.completePopupCallback('https://yourapp.com');

3. 为功能加点数闸门

登录后 token 会自动保存。每次计费操作前调用 gate();若被拒绝,SDK 会自动弹出官方充值 / 登录弹窗,你无需自行处理。

// gate() verifies credits before a metered action and shows the
// official topup / login modal on denial.
if (!(await sc.gate())) return;
runMyFeature();

4. 直接调用 execute 接口(HTTP)

推荐使用 SDK,但你也可以直接调用网关。把资产 id 作为 app_id 传入。feature_cost 仅作参考——网关始终按资产在服务端配置的价格计费,客户端无法少报来少付。

POST https://api.scenelet.com/v1/sdk/execute
Headers:
  Authorization: Bearer <scenelet-token>
  Content-Type: application/json

{ "app_id": "app_xxxxxxx", "feature_cost": 1 }

→ 200 OK
{ "ok": true, "remainingCredits": 95, "userId": "u_abc" }

→ 200 OK (denied)
{ "ok": false, "reason": "insufficient_funds",
  "topupUrl": "https://scenelet.com/topup" }

5. 远程 Kill-Switch

如果你的场景被平台远程禁用(违规、申诉中),/v1/sdk/execute 会直接返回 reason: "plugin_disabled"。SDK 自动弹出禁用提示,不需要你处理。

需要 client_id?在 scenelet.com 的开发者应用(Developer apps)面板创建一个 OAuth 客户端。app_key 标识用于计费的资产,client_id 标识发起登录的应用。
Scenelet SDK · Scenelet