应用开发开发教程
接入用户运行会话
接入用户运行会话:沿用平台当前公开 SDK 合同,区分本地模拟、联网调试与正式运行。
用户打开应用后,前端把 launchCode 交给应用自己的后端。应用使用进程级 RuntimeClient 交换启动码。正式运行所需地址和应用凭据由平台自动提供,业务代码不填写凭据路径:
from jusp_sdk.runtime import RuntimeClient
runtime_sessions = RuntimeClient(
app_key="your-app",
)
def exchange_runtime(body: dict) -> dict:
session = runtime_sessions.exchange_request(body)
identity = session.identity()
return {
"sessionId": session.session_id,
"tenantId": identity.tenant_id,
"accountId": identity.account_id,
"roles": list(identity.roles.roles),
"expiresAt": session.expires_at,
}exchange_request 严格只接受 {"launchCode": "..."}。启动码被并发提交时只有一个请求成功;应用把失败映射为“请重新打开应用”,不能退回旧身份链。
需要重新确认会话时:
session = runtime_sessions.resolve(session_id)
if session.app_roles.allows("your-app.editor"):
...SDK 默认缓存成功解析 1 秒、最多 2048 项,并合并同步客户端对同一 session 的并发解析;不会越过 expiresAt。安全敏感功能可以创建 resolve_cache_ttl_seconds=0 的客户端关闭缓存。
运行会话默认有效 24 小时。应用可以在用户持续使用期间提前续期,而不必等待会话失效:
session = runtime_sessions.resolve(session_id)
session = runtime_sessions.renew_if_needed(
session,
min_remaining_seconds=6 * 60 * 60,
)
# 如果 session_id 变化,把新的 ID 原子替换到应用自己的 HttpOnly Cookie。续期会重新读取当前账号、组织关系和应用角色,不沿用陈旧权限;同一初始登录最多连续续期七天,此后应引导用户从应用中心重新打开。已过期会话不能续期,权限撤销或应用不可用也不会降级放行。