以 isHeyboxAppLoggedIn 为判别字段的联合结果:
false:当前未登录,authorization 和 userInfo 固定为 null。true:authorization 固定包含 identity、profile 两项状态;兼容 Host 的
userInfo 仍可能为 null,非空时包含隔离 app_user_id 与可空 profile。
支持 Steam 账号能力的 Host 还可能返回 authorization.steam_account 与
userInfo.steam_id;授权与绑定状态应分别判断。HbMiniProgramSDKError PERMISSION_NOT_IN_SNAPSHOT / PERMISSION_DENIED 表示
当前运行快照缺少或未启用 userInfo 权限;INVALID_STATE 表示缺少 canonical 小程序身份;
REQUEST_FAILED / REQUEST_UNSUPPORTED / INVALID_RESPONSE 表示 Host 或资料读取失败;
HEYBOX_APP_LOGIN_REQUIRED 表示初次登录态检查后,Host 会话在隔离身份读取期间失效;
AUTHORIZATION_CONTEXT_CHANGED 表示请求期间发生账号切换或授权撤销;
RUNTIME_DESTROYED 表示 Runtime 已终止。握手失败也会以该错误类型拒绝调用。
HbMiniProgramSDKError RATE_LIMITED 表示上游返回 403/429,或该 endpoint 处于
Runtime 熔断窗口;error.data.status 为上游状态码,error.data.retryAfterMs(可能缺失)给出
建议退避时长。
HbMiniProgramSDKError RATE_LIMITED_BY_RUNTIME 表示 Runtime 本地拒绝(每 session
配额或同 endpoint 循环检测),请求没有到达上游;error.data.origin 为 'budget' 或 'loop'。
两种情况调用方都应停止立即重试,避免把用户 IP 打成被封。
该读取不展示授权 UI,也不要求可信用户手势。Manifest 中必须声明 userInfo,但不需要
公开 network 权限;Manifest 权限与 authorization.identity/profile 表示的用户授权是
两层独立门禁。开启网络权限后仍可调用本方法。
当前账号未登录是正常返回分支,不是 HEYBOX_APP_LOGIN_REQUIRED 错误。已登录时 Runtime
会静默建立或读取本小程序隔离身份,并授予 identity 与 profile。app_user_id 只在
当前小程序与当前授权有效期内作为稳定、不透明的关联键;它不是黑盒用户 ID、授权码或
登录凭据。profile.nickname / avatar 只用于展示,可能为空字符串,不应用于鉴权。
Steam 账号能力启用时,该读取还会静默授予 steam_account;只有当前账号存在主绑定
时才返回 string 类型的 steam_id。该字段缺失不能单独证明用户拒绝了授权。
该方法不返回 code、token 或 cookie,也不会创建开发者服务端会话。需要服务端身份时, 在可信用户操作中调用 auth.login 获取一次性 code;需要停止 使用现有身份时,调用 user.revokeAuthorization 并同步清理业务缓存与服务端会话。
import hbSDK from '@heybox/hb-sdk'
const result = await hbSDK.user.getInfo()
if (!result.isHeyboxAppLoggedIn) {
showHeyboxLoginHint()
} else if (!result.userInfo) {
showUserInfoUnavailable()
} else {
const { app_user_id, profile } = result.userInfo
bindLocalIdentity(app_user_id)
if (result.authorization.profile === 'granted' && profile) {
renderProfile(profile.nickname, profile.avatar)
}
}
获取当前黑盒 APP 登录态、授权状态和已获准披露的资料。