我正在尝试构建一个需要基本 Outlook 登录的机器人。我正在观看这个视频
https://channel9.msdn.com/events/Build/2017/P4063?term=cortana%20skill
17:02 的人为范围、授权和 token URL 添加了以下值:
wl.basic wl.birthday
https://login.live.com/oauth20_authorize.srf
https://login.live.com/oauth20_token.srf
然后我偶然发现了 Microsoft 的文档:
https://learn.microsoft.com/en-us/cortana/tutorials/bot-skills/bot-skill-auth
其中表示范围和 URL 的值是:
User.Read offline_access openid
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token
视频来自 2017 年 5 月 10 日(即 BUILD 2017),文章来自 2017 年 4 月 8 日。那么哪一个是正确的/已弃用的?我还尝试混合它们,这就是不同组合的登录提示的样子:
正如您所看到的,范围/url 的所有四种变体都会在 UI 中产生完全不同的登录?!?!?! (右栏的看起来也有点破损)哪个是正确的方法?
更新 另外,在这篇文章之后,我使用文档中描述的 URL 添加了一张歌唱卡到我的机器人中:
var message = context.MakeMessage() as IMessageActivity;
message.Speak = "This is a Sign-in card";
message.Summary = "This is a Sign-in card";
message.Text = "Message Text";
message.Attachments = new List<Attachment>(){
new SigninCard("You need to authorize me", new List<CardAction>()
{
new CardAction()
{
Value = "https://login.microsoftonline.com/?redirect_uri=http%3a%2f%2fbing.com%2fagents%2foauth",
Type = "signin",
Title = "Connect"
}
}).ToAttachment()
};
await context.PostAsync(message);
令我惊讶的是,单击登录按钮时,会弹出一个类似于 Office 365 的全新登录 UI:
更新 2 条!!!: https://twitter.com/chriscapossela/status/888029356504645632
最佳答案
这个答案需要一点历史:)
过去,为了对 Microsoft 用户进行身份验证,您必须知道用户是否具有 OrgId(用于登录 Microsoft 的业务服务)或 MSA(用于登录非业务 Microsoft 服务)身份。由于我不想离题的原因,它导致了两个 oAuth 端点:
- https://login.live.com/ ...是/曾经是 MSA 特定身份的 token 端点
- https://login.windows.net/[AAD-TENANT-ID]/ ...是/曾经是 OrgID 特定身份的 token 端点
可以理解的是,开发人员对此感到非常沮丧。为了解决此问题,Microsoft 创建了 v2 app model ,它允许您对两种帐户类型使用一个 AuthN/Z 端点。 v2 应用程序模型使用了很多黑魔法来抽象化 MSA 和 OrgID 之间在同意、范围、端点等方面的差异,因此作为开发人员的您不必担心它。 p>
但是 - 我们的一些 API,尤其是在 v2 之前创建的端点,是针对特定帐户类型的。 Nafis 在构建演示中使用的 Live API,IIRC 不能很好地处理 OrgID 身份 - 如果用户使用其 OrgId 帐户登录 v2 端点,您将得到不理想的行为,因为访问 token 将用于一个 OrgID 帐户。为了防止这种破坏技能的行为,他直接使用 MSA 端点 (live.com),从而完全阻止 OrgID 用户登录该技能。
混合 URL 时您会看到不同的 UX,因为 v1 和 v2 端点提供不同的登录 UX。最后一个图像中的错误消息似乎表明您正在使用 MSA 身份登录聚合 API。 $5 表示这与您混合 v1 和 v2 端点/范围/等这一事实有关,但如果不查看确切的 API 调用就很难判断。
CSK 文档使用 v2 端点,因为我们的大多数 API(包括邮件/Outlook API,它们现在是 Microsoft Graph 的一部分)现在都在使用它。当我使用 MSFT 服务编写代码时(或者当我为服务编写文档时;)),我默认使用 v2 应用程序模型,除非 API 文档特别提到 v1 端点,例如 live API docs做。
关于azure - Microsoft 基础结构当前的 OAuth URL 和范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44972531/