# 浏览器登录、OAuth 授权和密钥读取的交接工作流 ## 浏览器凭证交接工作流样例 ### 场景 用户要求配置一个云 API,流程需要浏览器登录、OAuth 授权、读取 resource key,并把 key 写入本地项目 `.env` 后跑 smoke test。 ### 旧流程 1. agent 打开控制台页面,遇到登录/MFA 后停住。 2. 用户完成登录后,agent 继续点击,但不清楚哪些按钮涉及授权、购买或一次性凭证保存。 3. key 读不到时,只能猜是没登录、没权限、tenant 错、资源没建好,还是 API credits 不足。 4. 最后项目运行失败,错误信息没有被归类,下一次恢复还要重新排查。 ### 新流程 | 阶段 | agent 负责 | 用户负责 | 成功信号 | 失败信号 | | --- | --- | --- | --- | --- | | 预检 | 打开目标页面,确认项目目录、回调 URL、`.env` 路径和所需权限 | 无 | 页面可访问,项目路径明确 | 404、未建资源、回调 URL 缺失 | | 登录交接 | 停在登录页或 MFA 页,说明需要用户完成的具体动作 | 输入账号、密码、MFA | 登录后返回控制台或授权页 | 登录循环、账号无 tenant 权限 | | 授权/购买 | 解释按钮含义,标记是否会授权、保存一次性 credentials、购买 credits 或升级权限 | 点击 OAuth Authorize、确认购买/升级、保存一次性凭证 | 控制台显示授权完成、credits 可用 | credits_required、permission_denied | | key 读取 | 读取非敏感页面信息,指导用户暴露/复制 key;不代填账号/MFA | 在需要时确认显示或复制密钥 | `.env`/keychain 出现必需 key | resource key 不可见、tenant_mismatch | | smoke 验证 | 运行最小 API 调用并归类错误 | 无 | 返回 200 或可解析的最小业务响应 | missing_key、permission_denied、callback_not_configured | ### 推荐落地话术 ```text 我已经把页面停在 Azure Speech resource 的 Keys and Endpoint。这里需要你完成一次敏感确认:如果页面要求重新登录或 MFA,请你自己输入;如果需要点击 Show keys,请你确认后我再继续读取页面上的 key,并写入本项目的 .env。完成后我会运行 smoke 脚本,只验证最小接口是否可用。 ``` ### 推荐 smoke 输出 ```text CREDENTIAL_CHECK - env_file: .env - required_keys: AZURE_SPEECH_KEY, AZURE_SPEECH_REGION - key_present: true - api_probe: failed - failure_class: tenant_mismatch - next_action: 请确认当前登录账号是否有该 Azure subscription/resource group 的 Key Reader 或 Owner 权限。 ``` 这个模式的重点不是让 agent 代替用户处理敏感凭证,而是把可代做的浏览器操作、必须用户完成的授权动作、以及完成后的可验证信号拆开。