用途:为 Salla 应用获取并维护有效的商户令牌,覆盖 OAuth 模式选择、应用配置、令牌接收/交换与安全刷新。
主要能力:
- 模式选择:Easy Mode 为默认推荐,令牌经 app.store.authorize webhook 自动送达,无需 /callback 或 state;Custom Mode 走 /callback 授权码交换,主要用于本地开发/Postman,发布应用若无正当理由可能被审核拒绝。
- 配置:通过 Partners MCP 的 salla_scopes(get/set)读取或更新 OAuth 作用域;salla_apps action=connect 一次性设置作用域、redirect_urls 与 webhook_url。redirect_urls 即模式选择器:Easy Mode 指向 Salla 自有回调(生产为 ["https://accounts.salla.sa/callback/{app_id}"]),Custom Mode 指向自有回调。
- 令牌接收:Easy Mode 下商户安装触发 app.store.authorize,从 payload.data 读取 access_token 与 refresh_token 并按商户持久化;app.updated 后会再次触发。
- 生命周期:access token 依 expires 字段(绝对 Unix 时间戳,非时长);refresh token 长期有效但单次使用,每次刷新返回新 refresh token。offline_access 必须出现在授权 URL 中才会签发 refresh token。
- 安全刷新:需按商户加分布式锁串行刷新,提前(如到期前约 1 天)刷新,并同时保存新旧两个令牌。
- 商户信息:GET https://accounts.salla.sa/oauth2/user/info,Authorization: Bearer <access_token>,商户 id 位于顶层 merchant.id。
使用方式:按步骤执行——发现需求、选择模式、用 MCP 配置应用、接收或交换令牌、理解生命周期、安全刷新、获取商户信息。webhook 签名密钥需在 Partner Portal 手动创建/轮换,MCP 只读,部署前用 salla_apps action=get 读取当前 webhook_secret。
适用场景:Salla 应用商店应用与本地开发调试。
限制:令牌必须存入真实数据库(/tmp 与内存不可靠,serverless 冷启动会丢失);令牌与 client secret 须加密存储且不得写入日志;回调与 webhook 仅限 HTTPS;需限制已知服务器 IP。具体代码示例见 references 文件,本文未展开。