首页 > 解决方案 > 如何强制 Cortana OAuth 不使用 Magic Code

问题描述

我使用botbuilder-js编写了一个自定义机器人。在某些时候它需要用户登录,因此机器人发出OAuthPrompt对话框,使用户登录(使用谷歌,我在 Azure 门户 OAuth 连接设置中配置)。它在 Bot Framework Emulator 中运行良好,但是当我将 bot 与 Cortana 集成时,用户登录后,他会进入此页面:

在此处输入图像描述

有趣的是,这个对话框是模态的,所以即使我想,我也无法将代码粘贴到 Cortana 聊天中。

我需要做什么才能强制 Cortana 不需要这个魔法代码?

标签: javascriptbotframeworkcortanacortana-skills-kit

解决方案


按照 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]

您不应该设置带外身份验证(又名复制/粘贴身份验证urn:ietf:wg:oauth:2.0:oob) - 因为这意味着身份管理器在流程完成时不会调用 redirect_url(或 redirect_uri)(让 bot 服务或 cortana 知道您正在完成登录),更重要的是,您可能不希望用户粘贴一些代码来获取访问令牌。如果您关注https://developers.google.com/identity/protocols/OAuth2InstalledApp,您将看到重定向 uri 应该是机器人框架或 cortanas,而不是带外。这样做,代码应该被请求者以编程方式摄取。您可以在 Google 应用程序注册表中单击凭据刀片进行配置。


推荐阅读