接口参考
权限
每个接口需要什么权限、默认给了哪些、怎么申请与怎么被收回。
最后更新
权限决定一个已授权的站点具体能做什么。它由用户在控制台上批准,网页只能申请、 不能自授。
默认授予
配对时默认给这四项:
| 权限 | 允许的调用 |
|---|---|
printer.read | 打印机列表 / 能力 / 状态 / 健康告警 |
profile.read | 查询配置档 |
job.print | 静默打印(真实副作用) |
job.preview | 预览(出纸前有用户确认) |
大多数业务系统到这里就够了。
完整列表
| 权限 | 允许的调用 | 风险 |
|---|---|---|
printer.read | 打印机列表 / 能力 / 状态 / 健康告警 | 低 |
printer.settings | 打开系统打印机设置 | 低 |
profile.read | 查询配置档 | 低 |
profile.write | 创建 / 修改 / 删除配置档 | 中 |
job.print | 静默打印(真实出纸) | 高 |
job.preview | 预览 | 低 |
job.read | 查询任务 | 低 |
job.cancel | 取消任务 | 中 |
device.read / device.print | 直连设备的查询与打印 | 高 |
scanner.read | 扫描仪列表 / 能力 / 状态 | 中 |
scan.run | 发起扫描、读作业、下载成品 | 高 |
scanner.read 与 scan.run 不在默认范围,每次扫描还要在电脑上确认,
见扫描。
申请更多权限
在配对的同一次调用里申请,用户会在确认框里看到完整清单:
await client.ensureAuthorized(['job.read', 'job.cancel']);
// 或显式配对:
await client.pair(['printer.read', 'job.print', 'job.read']);如果已经授权过,authStatus() 能查到当前拥有哪些权限:
const status = await client.authStatus();
console.log(status.permissions);界面应当只申请真正用得到的权限——清单越长,用户越难判断该不该点同意。
缺权限的表现
调用超出权限时得到 PERMISSION_DENIED。这是可解释、可恢复的状态:
提示用户到控制台「安全与站点」为该站点勾上对应权限即可,不要引导用户
「把安全设置关掉」。
权限会被收回
用户可以在控制台随时调整权限、撤销令牌或移除站点。撤销后:
- 已建立的连接会被断开(撤销令牌时);
- 后续调用重新走配对流程。
因此不要把「已授权」当作永久状态:捕获 TOKEN_INVALID、PAIRING_REQUIRED
并重新走 ensureAuthorized(),而不是让页面卡死在错误上。