如何强制 Cortana OAuth 不使用 Magic Code
How to force Cortana OAuth not to use Magic Code
我使用 botbuilder-js 编写了一个自定义机器人。在某些时候它需要用户登录,所以机器人发出 OAuthPrompt
对话框,让用户登录(使用 google,我在 Azure 门户 OAuth 连接设置中配置了)。它在 Bot Framework Emulator 中运行良好,但是当我将 bot 与 Cortana 集成时,用户登录后,他会登陆此页面:
有趣的是这个对话框是模态的,所以我无法将代码粘贴到 Cortana 聊天中,即使我想粘贴也是如此。
我需要做什么来强制 Cortana 不需要这个魔法代码?
已经在 GitHub botbuilder-js repo 上回答了这个问题。回答以提高知名度。
这确实是一个错误。我能够重现这个问题。如果您复制代码,您可以将代码作为新命令输入到机器人。这是一个糟糕的解决方法,但它会一直有效,直到 UI 被修复。请按照以下步骤操作:
- 打开 Cortana 并连接到您的机器人 ("tell [bot] hi")
- 点击登录选项
- 写下来自window
的魔法代码
- 打开 Cortana 并重新连接到您的机器人
- 告诉你的机器人魔法代码 ("tell [bot] [magic code]")
- 登录应该成功
- 与您的机器人互动
按照 Google 上的说明,我发现重定向 URL 是提示您输入魔术代码的原因。如果您使用 Google 工具,并且设置了带外身份验证,您将获得如下所示的 OAuth 授权 URL...
Authorize this app by visiting this url:
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&response_type=code&client_id=[my client id]&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
Enter the code from that page here: [your code]
您不应设置带外身份验证(又名 copy/paste 身份验证 urn:ietf:wg:oauth:2.0:oob
)- 因为这意味着身份管理器不会调用 redirect_url(或 redirect_uri) 当流程完成时(让 bot 服务或 cortana 知道您已完成登录),更重要的是,您可能不希望用户粘贴某些代码来获取访问令牌。如果您关注 https://developers.google.com/identity/protocols/OAuth2InstalledApp,您将看到重定向 uri 应该是 bot 框架或 cortanas,而不是带外。这样做,代码应该被请求者以编程方式摄取。您可以在 Google 应用注册中单击凭据边栏选项卡进行配置。
我使用 botbuilder-js 编写了一个自定义机器人。在某些时候它需要用户登录,所以机器人发出 OAuthPrompt
对话框,让用户登录(使用 google,我在 Azure 门户 OAuth 连接设置中配置了)。它在 Bot Framework Emulator 中运行良好,但是当我将 bot 与 Cortana 集成时,用户登录后,他会登陆此页面:
有趣的是这个对话框是模态的,所以我无法将代码粘贴到 Cortana 聊天中,即使我想粘贴也是如此。
我需要做什么来强制 Cortana 不需要这个魔法代码?
已经在 GitHub botbuilder-js repo 上回答了这个问题。回答以提高知名度。
这确实是一个错误。我能够重现这个问题。如果您复制代码,您可以将代码作为新命令输入到机器人。这是一个糟糕的解决方法,但它会一直有效,直到 UI 被修复。请按照以下步骤操作:
- 打开 Cortana 并连接到您的机器人 ("tell [bot] hi")
- 点击登录选项
- 写下来自window 的魔法代码
- 打开 Cortana 并重新连接到您的机器人
- 告诉你的机器人魔法代码 ("tell [bot] [magic code]")
- 登录应该成功
- 与您的机器人互动
按照 Google 上的说明,我发现重定向 URL 是提示您输入魔术代码的原因。如果您使用 Google 工具,并且设置了带外身份验证,您将获得如下所示的 OAuth 授权 URL...
Authorize this app by visiting this url:
https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&response_type=code&client_id=[my client id]&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
Enter the code from that page here: [your code]
您不应设置带外身份验证(又名 copy/paste 身份验证 urn:ietf:wg:oauth:2.0:oob
)- 因为这意味着身份管理器不会调用 redirect_url(或 redirect_uri) 当流程完成时(让 bot 服务或 cortana 知道您已完成登录),更重要的是,您可能不希望用户粘贴某些代码来获取访问令牌。如果您关注 https://developers.google.com/identity/protocols/OAuth2InstalledApp,您将看到重定向 uri 应该是 bot 框架或 cortanas,而不是带外。这样做,代码应该被请求者以编程方式摄取。您可以在 Google 应用注册中单击凭据边栏选项卡进行配置。