@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...
    • 为当前小程序获取一次性短期授权码,由开发者服务端建立用户会话。

      参数

      • 可选options: LoginOptions

        可选的授权配置。不传、传 {} 或 scopes: undefined 时只申请隐式 identity;需要昵称和头像时传 { scopes: ['profile'] }。

      返回 Promise<LoginResult>

      Promise 成功时返回 LoginResult,包含 code、有效期、实际授权 scope 和 新 Host 提供的本地 accountKey;不包含用户资料、app_user_id、token、cookie 或应用密钥。

      HbMiniProgramSDKError INVALID_PARAMS:scopes 不是数组、包含未知值或 重复值,或当前 Host 尚未启用请求的 steam_account scope。

      HbMiniProgramSDKError PERMISSION_NOT_IN_SNAPSHOT 或 PERMISSION_DENIED: 当前运行快照缺少或未启用 userInfo 权限。

      HbMiniProgramSDKError SERVER_API_REQUIRED:当前处于无网络的 local 模式,不能获取授权码;需要为当前版本启用有效网络权限。

      HbMiniProgramSDKError USER_GESTURE_REQUIRED:本次需要展示黑盒登录或 授权 UI,但调用没有可信用户手势;AUTHORIZATION_CANCELLED:用户取消、关闭授权页, 或没有同意必选的 identity。

      HbMiniProgramSDKError HEYBOX_APP_LOGIN_REQUIRED:当前黑盒账号未登录或 登录态已失效;AUTHORIZATION_CONTEXT_CHANGED:授权期间发生账号切换、授权撤销等 上下文变化;AUTHORIZATION_PRESENTATION_UNAVAILABLE:Host 无法展示授权界面。

      HbMiniProgramSDKError REQUEST_FAILED、REQUEST_UNSUPPORTED、 INVALID_RESPONSE、INVALID_STATE、METHOD_FORBIDDEN 或 RUNTIME_DESTROYED:Host 请求、响应、身份上下文、能力支持或 Runtime 生命周期不满足调用要求。

      HbMiniProgramSDKError RATE_LIMITED:登录或授权上下文请求遇到上游 403/429, 或该 endpoint 处于 Runtime 熔断窗口;error.data.retryAfterMs(可能缺失)给出建议退避时长。

      HbMiniProgramSDKError RATE_LIMITED_BY_RUNTIME:Runtime 本地配额或循环检测 拒绝,请求没有到达上游;error.data.origin 为 'budget' 或 'loop'。两者都应停止立即重试。

      HbMiniProgramSDKError SDK 握手、bridge 请求超时或 SDK 销毁时,抛出对应 初始化/transport 错误;业务应根据稳定的 error.code 分支,不比较 message。

      在项目根 package.json#heybox.permissions.userInfo.enabled 中声明 true 后才能调用。 userInfo 是开发者权限声明,LoginOptions.scopes 是用户资料授权,两层门禁互不 替代。

      SDK 会自动等待握手,但可能展示 UI 的调用必须直接发生在登录、绑定账号等明确的用户 操作回调中。页面应提前用 getHandshakeState() 和 onHandshakeStateChange() 启用按钮, 不要在点击后先等待其他异步工作。所需 scope 已授权时,Host 可以不展示 UI,直接签发 新 code;调用方仍不能假定以后每次都能静默完成。

      本能力通过 Host 的受信请求完成登录。平台为当前版本启用 Steam 账号能力后,无网络的 local 模式会拒绝调用;兼容 legacy 模式保持既有行为。页面若用 network.request() 把 code 发给自己的服务端,该网络调用仍须另行声明并获得 network 平台批准。页面不能直接访问平台换票接口,也不能持有服务端应用凭据。

      import hbSDK, { HbMiniProgramSDKError } from '@heybox/hb-sdk'

      async function loginFromUserAction() {
      try {
      const result = await hbSDK.auth.login({ scopes: ['profile'] })

      // 这是开发者自己的 HTTPS 接口;服务端负责换票并建立业务 session。
      await hbSDK.network.request({
      url: 'https://api.example.com/session/heybox',
      method: 'POST',
      data: { code: result.code },
      })

      if (!result.scopes.includes('profile')) {
      renderWithoutProfile()
      }
      } catch (error) {
      if (error instanceof HbMiniProgramSDKError && error.code === 'AUTHORIZATION_CANCELLED') {
      return
      }
      throw error
      }
      }

      0.3.1

      android

      ios

      ohos

      windows

      macos

      android none

      ios none

      ohos none

      windows none

      macos none