最后修改时间:2026-11-01 13:15:00
无需 Bearer/JWT 登录态;auth=noauth。client_id 必填。confidential 客户端必须在请求体提交正确的 client_secret(client_secret_post);public 客户端无需 secret,传入值也不校验。HTTP Basic 不作为客户端认证方式,不能用 Authorization 头代替请求体 client_id/client_secret。推荐 application/x-www-form-urlencoded;代码 ShouldBind 同时支持 application/json。响应直接使用 OAuth2 JSON,不含 code/msg/data 包装。RFC 8628 设备授权入口,无需用户登录态和 PKCE。提交 client_id、条件必填的 client_secret 与可选 scope。scope 省略或空字符串时默认 user:read tunnel:read traffic:read;空格分隔,支持 all 及有效资源前缀的 :* 通配符。成功 HTTP 200 返回 device_code、展示用 user_code、verification_uri、verification_uri_complete、expires_in=900(秒)、interval=5(秒)。用户码为 XXXX-XXXX 格式,字符集 BCDFGHJKLMNPQRSTVWXZ。verification_uri 基于 server.dash_url 拼接 /oauth/device,是供用户访问的前端页面,不是本导出的 API;verification_uri_complete 带 ?user_code=。将页面地址和用户码展示给用户,由用户在浏览器完成授权;客户端随后用 grant_type=urn:ietf:params:oauth:grant-type:device_code 及 device_code 轮询 /oauth2/token。authorization_pending 继续等待,slow_down 按新 interval 退避(每次增加 5 秒),拒绝、过期或无效设备码则停止。成功兑换一次后设备码被消费。错误:400 invalid_request(请求绑定/必填校验失败)、invalid_scope(无效权限范围);401 invalid_client(客户端不存在、停用或认证失败);500 server_error(内部错误、生成设备码失败、创建设备授权失败)。