跳到主要内容

3.3. 用户交互 (User Interaction)

收到 successful authorization response 后, client 向 end user 显示或以其他方式传达 user_codeverification_uri, 并指示其在 secondary device 上的 user agent 中访问该 URI, 例如使用 mobile phone 上的 browser, 然后输入 user code.

+-----------------------------------------------+
| |
| Using a browser on another device, visit: |
| https://example.com/device |
| |
| And enter the code: |
| WDJB-MJHT |
| |
+-----------------------------------------------+

Figure 2: Example User Instruction

authorizing user 导航到 verification_uri, 并在受 TLS [RFC8446] 保护的 secure session 中向 authorization server 进行 authentication. authorization server 提示 end user 输入 client 提供的 user_code, 以识别 device authorization session. 然后 authorization server 应告知 user 其正在执行的操作, 并要求其 approve 或 deny 该 request. user interaction 完成后, server 指示 user 返回自己的 device.

在 user interaction 期间, device 按 Section 3.4 的详细说明, 使用 device_code 持续 poll token endpoint, 直到 user 完成交互, code 过期, 或发生其他 error. device_code 不直接面向 end user; 因此不应在交互期间显示它, 以避免混淆 end user.

支持本规范的 authorization server MUST 实现一个 user-interaction sequence: user 首先导航到 verification_uri, 并在交互的某个阶段提供 user_code. 除此之外, user interaction 的确切 sequence 和 implementation 由 authorization server 决定; 例如 authorization server 可以允许 new user 在 authorization flow 期间注册 account, 或添加额外 security verification step.

authorization server 不建议在 verification URI (verification_uri) 中包含 user code (user_code), 因为这会增加 user 必须键入的 URI 长度和复杂度. 虽然分开输入 user_code 时 user 仍需键入相近数量的字符, 但一旦其成功导航到 verification_uri, authorization server 就可以高亮 code 输入错误, 从而改善 user experience. 下一节记录使用 verification_uri_complete 的 user interaction, 它设计用于携带这两项信息.