@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...
    • 获取当前黑盒 APP 登录态、授权状态和已获准披露的资料。

      返回 Promise<MiniProgramUserInfoResult>

      以 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)
      }
      }

      0.3.1

      android

      ios

      ohos

      windows

      macos

      android none

      ios none

      ohos none

      windows none

      macos none