Files
craftlabs-authorization-sdk/docs/bitanswer-client-api-overview.md
T
2026-04-06 17:42:09 +08:00

25 KiB
Raw Blame History

比特授权云:客户端 API 梳理(基于官方文档)

来源:C 语言接口定义 v2Java 语言接口 v2SDK 概述典型场景
其它语言入口(文档中心列举):DelphiC#VB.NetVB6
整理日期:2026-04-06
说明:本文为对公开文档的纲要式整理,参数细节、错误码与边界条件以官方页面及随产品下发的 bitanswer.h/接口文件为准。
本地对照:已与仓库内手工备份的 C 接口 [docs/c.md](c.md)、Java 接口 [docs/java.md](java.md) 交叉核对(见文末「审核说明」及 附录 A)。


1. SDK 交付形态与前置条件

  • 获取方式:在比特授权云平台「模块下载」获取与产品绑定的静态库/动态库及接口定义;不同产品库不可混用(文档说明 Login 不匹配会返回 0x105 类错误)。
  • C:头文件 bitanswer.h + 平台库(文档示例如 libxxx_xxx_x64.a)。
  • JavaJNI + 主封装类 **BitAnswer**(方法名为 camelCase,语义与 C API 大体一一对应;签名与枚举见 附录 A / [docs/java.md](java.md))。
  • 支持平台(SDK 概述列举)Windows、Linux、Android、ARM Linux、MIPS Linux、macOS、iOS、HarmonyOS、QNX 等。

运行期共性概念(SDK 概述)

概念 含义
application_data / 产品识别码 编译进接口定义、与产品一一对应,多数 API 必填。
BIT_HANDLE / 会话句柄 Bit_Login / Bit_LoginEx 等成功后返回,后续特征项/心跳等依赖此句柄。
BIT_STATUS API 返回状态码;具体取值与错误码见官方「错误码」文档。
授权文件默认目录(典型场景) Linux{当前用户}/BitAnswerWindows{系统盘}/ProgramData/BitAnswer;可用 Bit_SetRootPath 自定义。

2. URL / 地址约定(Bit_LoginszURL 等)

文档说明 szURL 可表达多种「授权来源」(节选):

形式 含义
bit://ip:port 集团授权服务地址。
http://ip:port 授权服务中心(如云/E3 等)。
root://路径 仅在该路径下查找授权,效果类似先 Bit_SetRootPath
lic://文件路径 / 目录 / License 串 内存或本地文件加载:lic:// 可加载文件内容、目录下 *.lic、或直接传入 License 串;多个路径用逗号分隔c.md 示例为半角 ,)。
简写 文档示例:/tmp,/data,127.0.0.1:8273 等与 lic://.../bit://... 组合等价写法。

配置优先级(文档):同一设置同时存在时 — 环境变量 > 调用 API 传入 > 配置文件bit_config.xml,典型场景详述多 Server/Proxy 节点)。


3. 登录模式与标识(LOGIN_MODE / LoginMode

Bit_Login / Bit_LoginExmode按位组合。文档列出的典型取值(C 名 / Java 名对应):

C(示意) Java(示意) 语义摘要
BIT_MODE_LOCAL LOCAL 仅本地(单机、BIT-ID、内存授权等)。
BIT_MODE_REMOTE REMOTE 仅远端(云、帐号、集团等)。
BIT_MODE_AUTO AUTO 本地与远端都尝试;优先级:本地 > 远端(在已配置远端前提下)。
BIT_MODE_CACHE CACHE 云授权 SN 缓存,便于下次免输 SN。
BIT_MODE_USB USB USB 相关授权。
LOGIN_MODE_PROCESS PROCESS 集团:按进程占并发点;其它模式无效。
LOGIN_MODE_SESSION SESSION 集团:更细粒度会话占点。
LOGIN_MODE_HIGH_PRIORITY HIGH_PR :高优先级登录可挤占普通登录。
LOGIN_MODE_NO_NETWORK NO_NETWORK 禁止库联网。
LOGIN_MODE_CHECK_USERNAME CHECK_USERNAME 集团:设备+用户名才视为同一点。
LOGIN_MODE_USE_SESSIONID USE_SESSIONID Logout 不释放点数,由第三方维护心跳。
LOGIN_MODE_HIGH_PERFORMANCE HIGH_PERFORMANCE 集团:合并请求降负载。
LOGIN_MODE_PERSISTENT_CONN PERSISTENT_CONN 集团长连接。
LOGIN_MODE_CREATE_HANDLE_ONLY CREATE_HANDLE_ONLY 仅创建句柄,真正校验推迟到 Query
LOGIN_MODE_CREATE_NEW_HANDLE CREATE_NEW_HANDLE 每次唯一句柄,属性互不干扰。
LOGIN_MODE_MID / ACCOUNT / GROUP MID / ACCOUNT / GROUP 按设备、帐号、分组名占点等。

C 示例中常写作 LOGIN_MODE(BIT_MODE_REMOTE | LOGIN_MODE_HIGH_PERFORMANCE) 等形式,即用 LOGIN_MODE 宏包装按位或(见 c.md)。

szSN / sn 常见形态(文档):云平台 SN#0 / #bitid:0 等形式选 BIT-ID<口令> 激活口令;SN<口令> 拼接;帐号授权可与密码类参数配合(具体见帐号授权专章)。


4. API 分组:认证与会话(C 名为主,Java 对照)

功能 C API Java API(文档)
登录 Bit_Login, Bit_LoginEx login, loginEx
帐号 Token Bit_LoginByToken, Bit_LoginByTokenEx loginByToken, loginByTokenEx
帐号密码 Bit_LoginByPassword loginByPassword
登出 Bit_Logout logout
浮动迁出 Bit_Revoke(在线/离线迁出、请求码) revoke, revokeOnline
删除本机 SN 数据 Bit_RemoveSn removeSn
手动心跳 Bit_Heartbeat10s 内最多触发一次等说明) heartbeat
Session 控制 Bit_SessionControl, Bit_SetSessionState sessionControl, setSessionState

5. API 分组:激活与离线/在线升级

功能 C API JavaBitAnswerdocs/java.md
在线激活/升级 Bit_UpdateOnline void updateOnline(String url, String sn)
取升级请求串 Bit_GetRequestInfo(绑定类型、设备码 REQ_TYPE_MID 等) String getRequestInfo(String sn, BindingType type)
应用升级包 Bit_ApplyUpdateInfo String applyUpdateInfo(String updateInfo)
远程集团应用升级 Bit_ApplyUpdateInfoEx java.md 未收录;若需远程集团升级请以随包接口为准
用请求串换升级码 Bit_GetUpdateInfo String getUpdateInfo(String url, String sn, String requestInfo)

典型场景补充

  • 在线Bit_UpdateOnline(NULL, sn, application_data)BIT-ID 可用 #0 等形式。
  • 离线:本机 Bit_GetRequestInfo → 联网换取 License 串 → 本机 Bit_ApplyUpdateInfo;涉密场景可用设备码缩短人工传递长度。
  • 内存授权:从离线包取 <code>,拼 lic://... 作为 Bit_Login 的 url,模式 BIT_MODE_LOCAL

6. API 分组:特征项(功能模块与加密点)

功能 C API Java API(文档)
批量 Query Bit_BatchBegin, Bit_BatchEnd batchBegin, batchEnd
基础占用/释放 Bit_QueryFeature, Bit_ReleaseFeature queryFeature, releaseFeature
集团扩展占用 Bit_QueryFeatureEx, Bit_ReleaseFeatureEx queryFeatureEx, releaseFeatureEx
按名称+版本/队列 Bit_QueryFeatureEx2, Bit_ReleaseFeatureEx2 queryFeatureEx2, releaseFeatureEx2
查存在/有效期(不占点) Bit_GetFeatureInfo2, Bit_GetFeatureInfoEx2 getFeatureInfo2, getFeatureInfoEx2
Ticket 信息 Bit_GetTicketInfo getTicketInfo
算法特征 Bit_ConvertFeature convertFeature
密钥特征加解密 Bit_EncryptFeature, Bit_DecryptFeature encryptFeature, decryptFeature
读写特征值 Bit_ReadFeature, Bit_WriteFeature readFeature, writeFeature

文档强调:集团授权QueryFeature / ReleaseFeature(及 Ex 系列)需成对使用以正确占用/释放并发用户数;QueryFeatureEx 支持多种 mode(默认非阻塞、尽可能占用、仅检查计数等)。


7. API 分组:配置项(Data

功能 C API Java API(文档)
Bit_GetDataItem getDataItem
写/创建 Bit_SetDataItem setDataItem
枚举数量/名称 Bit_GetDataItemNum, Bit_GetDataItemName getDataItemNum, getDataItemName
删(授权码侧) Bit_RemoveDataItem removeDataItem

Java 文档对名称/值长度有简要限制说明(如名称最长 128 字节、值 1024 字节量级,以官方为准)。


8. API 分组:信息查询

c.md「信息获取」 大节对应。该节除下表外,还包括版本/句柄/诊断等 API(为减少重复,详见 §10)。

功能 C API 说明(摘要)
会话信息 Bit_GetSessionInfo XML 或字段型信息:SN/特征/配置项摘要、服务器时间、授权类型组合、起止日期、离线分钟数等。
本机/环境信息 Bit_GetInfo 已激活 SN 列表、特征列表、集团服务器发现、BIT-ID 列表、升级错误详情等。
集团服务信息 Bit_GetServerInfo 无需先 Login;查集团侧授权/特征等 XML。

c.md 源码块核对Bit_GetServerInfo 小节内的函数名被写成 Bit_GeServerInfo(缺字母 t),与章节标题不一致,应视为复制/排版笔误;集成时以 bitanswer.h 为准。


9. API 分组:借出 / 归还(浮动与集团场景扩展)

文档在 C / Java 接口中均用「借出操作」类章节描述。C 名称见下左列;JavaBitAnswerdocs/java.md 及下表。

C API Java 方法(docs/java.md
Bit_GetBorrowRequest String getBorrowRequest(String sn, int durationDay)
Bit_GetBorrowFeatureRequest String getBorrowFeatureRequest(int durationDay, String borrowScope)
Bit_CheckOutSn void checkOutSn(String url, int featureId)
Bit_CheckOutSnEx void checkOutSnEx(String url, int featureId, String xmlScope, int durationDays)
Bit_CheckOut void checkOut(String url, String scope, String featureList, int durationDays)
Bit_CheckOutFeatures void checkOutFeatures(String url, int[] featureList, int durationDays)
Bit_CheckIn void checkIn(String url, int featureId)
Bit_CheckInEx void checkInEx(String url, int featureId, String xmlScope)
Bit_ApplyBorrowInfo void ApplyBorrowInfo(String borrowInfo)(文档锚点为大写 ApplyBorrowInfo;参数类型应以实际 SDK 的 String 为准)

参数语义、scope / featureList XML 格式等以原文为准。Java 文档注明 applyUpdateInfo 可兼容离线借出串(与 ApplyBorrowInfo 重叠场景见原文)。


10. API 分组:路径、代理、属性与其它工具

对应 c.md「信息获取」 后半(Bit_GetVersion 起)与 「属性设置」 全节。常见于部署与诊断:

C API 用途摘要
Bit_SetRootPath 授权文件根路径。
Bit_SetProxy HTTP/SOCKS 等代理参数。
Bit_SetLocalServer 本地/集团服务发现相关设置(见原文)。
Bit_GetProductPath 产品路径查询。
Bit_GetVersion 库版本。
Bit_GetLastError 上一 API 错误码。
Bit_GetNextHandle 枚举/遍历句柄(见原文)。
Bit_SetAttr / Bit_SetCustomInfo 句柄/会话属性与自定义信息。
Bit_TestBitService 探测集团服务等可达性。

Javadocs/java.md)对应int getVersion() · String getProductPath() · int getLastError() · void testBitService(String url, String sn, int featureId) · void setRootPath(String rootPath) · void setLocalServer(String hostName, int port, int timeout) · void setProxy(String hostName, int port, String userId, String password) · void setAttr(int type, byte[] pValue) · void setCustomInfo(...)String / int 重载)。未在 java.md 列出Bit_GetNextHandle 的 Java 对等方法(若需遍历句柄请查随包 JNI 或新版文档)。


附录 AJava BitAnswer API(依据 docs/java.md

A.1 类型与构造

说明
主类 BitAnswer(实例方法;通过 JNI 调用 native,与 C SDK 同库)
构造方法 BitAnswer()BitAnswer(String url, String sn, LoginMode mode)(便捷构造,等价于再调用 login 的用法以官方示例为准)
错误处理 多数 API 为 void 或返回数据;int getLastError() 返回当前线程最近一次调用的错误码(成功为 0,见 java.md

A.2 文档中出现的枚举 / 参数类型(用于方法签名)

名称 用途(节选)
LoginMode login / loginEx、构造器第三参数;与 C 侧 LOGIN_MODE 按位语义对应,Java 侧为枚举常量(LOCALREMOTEAUTOCACHEUSBPROCESSSESSIONHIGH_PRNO_NETWORKCHECK_USERNAMEUSE_SESSIONIDHIGH_PERFORMANCEPERSISTENT_CONNCREATE_HANDLE_ONLYCREATE_NEW_HANDLEMIDACCOUNTGROUP
BindingType getRequestInfoEXISTINGLOCALUSB_STORAGE
BatchMode batchBeginBIT_BATCH_MODE_CONTINUEBIT_BATCH_MODE_BREAK
SessionType getSessionInfoXML_TYPE_SN_INFOXML_TYPE_FEATURE_INFOXML_TYPE_DATA_INFOBIT_SERVER_ADDRESSBIT_SERVER_TIMEBIT_CONTROL_TYPE 及各日期/次数/离线字段常量(见 java.md
InfoType getInfoBIT_INFO_SERVER_ADDRESSBIT_INFO_SNBIT_INFO_SN_FEATURE
ServerInfoType getServerInfoBIT_SERVER_INFO_SNBIT_SERVER_INFO_SN_FEATUREBIT_SERVER_INFO_SN_LICENSE
SessionCtlType sessionControlSESSION_CTL_LOGOUTSESSION_CTL_CHECK
setAttr 的 type ATTR_HB_RETRY_FAILED_CALLBACKATTR_WAIT_TIMEOUTATTR_RETRY_COUNT 等(见 java.md
setCustomInfo 的 infoId CustomInfoCUSTOM_CLIENT_IDCUSTOM_OPTION 等(java.md 列至 CUSTOM_GROUP_NAME(0xA)

A.3 方法签名全表(与 C 对照)

认证

Java
void login(String url, String sn, LoginMode mode)
void loginEx(String url, String sn, int featureId, String xmlScope, LoginMode mode)
void loginByToken(String url, String token)
void loginByTokenEx(String url, String businessGuid, String token, String idpGuid, String grantType)
void loginByPassword(String url, String guid, String secret, String account, String password)
void logout()
String revoke(String sn)
void revokeOnline(String url, String sn)
void removeSn(String sn)
int heartbeat()
String sessionControl(String url, String sessionId, SessionCtlType type)
void setSessionState(int state, byte[] pReserved)

激活升级(另见 §5 表格)

特征项

Java
void batchBegin(BatchMode mode) · int[] batchEnd()
int queryFeature(int featureId) · int releaseFeature(int featureId)
int queryFeatureEx(int featureId, int mode, int required, String scope) · int releaseFeatureEx(int featureId, int consumed, String scope)
long queryFeatureEx2(String featureName, int mode, int required, String scope) · void releaseFeatureEx2(byte[] ticket, int consumed)
int getFeatureInfo2(String featureName, String scope) · String getFeatureInfoEx2(String featureName, String scope)
String getTicketInfo(byte[] ticket, int type)typeBIT_TICKET_TYPR_USERS,原文档拼写如此)
int convertFeature(int featureId, int para1, int para2, int para3, int para4)
byte[] encryptFeature(int featureId, byte[] pPlainBuffer) · byte[] decryptFeature(int featureId, byte[] pCipherBuffer)
int readFeature(int featureId) · void writeFeature(int featureId, int featureValue)

配置项

Java
byte[] getDataItem(String dataItemName) · void setDataItem(String dataItemName, byte[] dataItemValue)
int getDataItemNum() · String getDataItemName(int index) · void removeDataItem(String dataItemName)

java.md:配置项名称最大 128 字节等限制与 C 侧一致。)

信息获取

Java
String getSessionInfo(SessionType type) · String getInfo(String sn, InfoType type)
String getServerInfo(String url, String sn, String scope, ServerInfoType type)
int getVersion() · void testBitService(String url, String sn, int featureId) · String getProductPath() · int getLastError()

借出操作(另见 §9 表)

A.4 与 C 覆盖差异(据 docs/java.md 全文)

C API Javadocs/java.md
Bit_ApplyUpdateInfoEx 未收录
Bit_GetNextHandle 未收录

补充C 侧 Bit_GetRequestInfoBINDING_TYPEREQ_TYPE_MID(设备码)java.mdgetRequestInfoBindingType 中仅列出 EXISTINGLOCALUSB_STORAGE。设备码流程在 Java 是否另有接口,以 随包 SDK / 更新版 java.md 为准。

A.5 文档小瑕疵(复制源)

  • loginEx 说明中「Login 等价于 LoginEx」与 C 页类似,易误解;需包含指定 featureId 时用 loginEx
  • batchBegin 正文写「由 Bit_batchEnd 提交」应为 batchEndJava / Bit_BatchEndC
  • ApplyBorrowInfo 参数写 string 应为 Java String

11. C API 名称索引(供检索)

下列名称与 c.md 中全部 ## [Bit_…] 小节一致,共 59 个独立函数(其中 Bit_CheckOutSn / Bit_CheckOutSnEx 合并在同一文档小节)。若与头文件有出入以 bitanswer.h 为准:

Bit_ApplyBorrowInfo · Bit_ApplyUpdateInfo · Bit_ApplyUpdateInfoEx · Bit_BatchBegin · Bit_BatchEnd · Bit_CheckIn · Bit_CheckInEx · Bit_CheckOut · Bit_CheckOutFeatures · Bit_CheckOutSn · Bit_CheckOutSnEx · Bit_ConvertFeature · Bit_DecryptFeature · Bit_EncryptFeature · Bit_GetBorrowFeatureRequest · Bit_GetBorrowRequest · Bit_GetDataItem · Bit_GetDataItemName · Bit_GetDataItemNum · Bit_GetFeatureInfo2 · Bit_GetFeatureInfoEx2 · Bit_GetInfo · Bit_GetLastError · Bit_GetNextHandle · Bit_GetProductPath · Bit_GetRequestInfo · Bit_GetServerInfo · Bit_GetSessionInfo · Bit_GetTicketInfo · Bit_GetUpdateInfo · Bit_GetVersion · Bit_Heartbeat · Bit_Login · Bit_LoginEx · Bit_LoginByPassword · Bit_LoginByToken · Bit_LoginByTokenEx · Bit_Logout · Bit_QueryFeature · Bit_QueryFeatureEx · Bit_QueryFeatureEx2 · Bit_ReadFeature · Bit_ReleaseFeature · Bit_ReleaseFeatureEx · Bit_ReleaseFeatureEx2 · Bit_RemoveDataItem · Bit_RemoveSn · Bit_Revoke · Bit_SessionControl · Bit_SetAttr · Bit_SetCustomInfo · Bit_SetDataItem · Bit_SetLocalServer · Bit_SetProxy · Bit_SetRootPath · Bit_SetSessionState · Bit_TestBitService · Bit_UpdateOnline · Bit_WriteFeature


12. 与mgmt/运营侧 API 的边界

开发者控制台还提供 Backoffice API(REST/数据结构),用于授权码、用户、业务等服务端自动化,与上表客户端安全库 API 不同层。若需「控制台可调用的 HTTP API」,请单独以 Backoffice 文档为准。


13. 免责声明

本文档不替代比特授权云官方文档与随 SDK 发布的法律/技术支持条款;集成与合规问题请咨询官方渠道。


14. 对照本地备份的审核结论(2026-04-06)

14.1 docs/c.md

结论
函数覆盖 c.md 中列出的全部 Bit 客户端 API 均已在本梳理的分组或 §11 索引中覆盖;无遗漏
章节结构 「信息获取」后半与「属性设置」对应 §8 / §10,表头已说明。
Bit_GetServerInfo c.md 代码块误写为 Bit_GeServerInfo;§8 已注释。
Bit_LoginEx 说明 c.mdfeatured=0 等笔误;本梳理未复述。
多路径分隔符 已标明示例为半角 ,
登录模式 c.md 表一致;已补充 LOGIN_MODE(...) 宏。
§11 索引 c.md 小节为对齐基准。

14.2 docs/java.md

结论
对等性 java.mdBitAnswer 实例方法与 C API 基本全覆盖;附录 A 为完整签名与枚举清单。
缺失相对 C Bit_ApplyUpdateInfoExBit_GetNextHandlejava.md 中未出现(§A.4)。
getServerInfo Java 文档写为 getServerInfo;无 C 页 GeServerInfo 笔误问题。
借出 §9 已按 java.md 补全 checkOut* / checkIn* / ApplyBorrowInfo 等 Java 方法表。