如何强制Cortana OAuth不使用魔术码

时间:2018-12-16 10:38:28

标签: javascript botframework cortana cortana-skills-kit

我用botbuilder-js编写了一个自定义机器人。在某个时候,它需要用户登录,因此该漫游器会发出OAuthPrompt对话框,该对话框使用户登录(使用我在Azure Portal OAuth连接设置中配置的google)。在Bot Framework Emulator中它可以正常工作,但是当我将bot与Cortana集成时,在用户登录后,他登陆了此页面:

enter image description here

有趣的是,此对话框是模态对话框,因此即使我愿意,也无法将代码粘贴到Cortana聊天中。

我该怎么做才能迫使Cortana不需要此魔术代码?

2 个答案:

答案 0 :(得分:0)

已经在GitHub botbuilder-js repo上对此进行了回答。回答以提高知名度。

这确实是一个错误。我能够解决这个问题。如果您将代码复制下来,则可以将代码作为新命令输入到机器人。这是一个很糟糕的解决方法,但是要等到UI修复后才能起作用。请按照下列步骤操作:

  1. 打开Cortana并连接到您的机器人(“告诉[bot]嗨”)
  2. 单击登录选项
  3. 从窗口写下魔术代码
  4. 打开Cortana并重新连接到您的机器人
    • 告诉您的漫游器魔术代码(“告诉[bot] [magic code]”)
    • 登录应该成功
  5. 与您的机器人互动

答案 1 :(得分:0)

按照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)服务或cortana知道您已完成登录),更重要的是,您可能不希望用户粘贴一些代码来获取访问令牌。如果您遵循https://developers.google.com/identity/protocols/OAuth2InstalledApp,您会看到重定向uri应该是机器人框架或cortanas,而不是带外。这样做,请求者应以编程方式获取代码。您可以在Google应用程序注册表中单击凭据刀片配置它。