我正在尝试构建一个需要基本Outlook登录的机器人。我正在看这个视频
https://channel9.msdn.com/events/Build/2017/P4063?term=cortana%20skill
并且17:02的人为范围和授权和令牌URL添加了以下值:
wl.basic wl.birthday
https://login.live.com/oauth20_authorize.srf
https://login.live.com/oauth20_token.srf
然后我偶然发现了微软的文档:
https://docs.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日(即2017年的BUILD),文章是2017年4月8日。那么哪一个是正确/弃用的?此外,我尝试混合它们,这是使用不同组合的登录提示:
正如您所看到的,范围/网址的所有四种变体都会在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弹出:
UPDATE 2 FRESH !!!: https://twitter.com/chriscapossela/status/888029356504645632
答案 0 :(得分:3)
这个答案需要一点历史:)
在当天,为了验证Microsoft用户,您必须知道用户是否拥有OrgId(用于登录Microsoft的业务服务)或MSA(用于登录非商业Microsoft服务)身份。由于我不会偏离的原因,它产生了两个oAuth端点:
可以理解的是,开发人员对此非常不满。为解决此问题,Microsoft创建了v2 app model,允许您为两种帐户类型使用一个AuthN / Z端点。 v2 app模型使用 lot 黑魔法来抽象MSA和OrgID之间的同意,范围,端点等差异,因此您作为开发人员不必担心它。
但是 - 我们的一些API,特别是那些创建在v2之前的端点,适用于特定的帐户类型。 Nafis在构建演示IIRC中使用的Live API与OrgID身份不兼容 - 如果用户使用他们的OrgId帐户登录v2端点,您将获得非理想行为,因为访问令牌将用于一个OrgID帐户。为了防止这种技能破坏行为,他直接使用MSA端点(live.com),阻止OrgID用户登录该技能。
混合URL时,您会看到不同的用户体验,因为v1和v2端点提供不同的登录用户体验。最后一个图像中的错误消息似乎表明您正在使用MSA身份登录到融合API。 $ 5表示这与你正在混合v1和v2端点/范围/等事实有关,但是如果不查看确切的API调用就很难分辨。
CSK文档使用v2端点,因为我们的API的大多数(包括邮件/ Outlook API,现在是Microsoft Graph的一部分)最近使用它。当我使用MSFT服务编写代码时(或者当我编写服务文档时);)我默认使用v2 app模型,除非API文档特别提到v1端点,例如live API docs。 / p>