在过去的五年中,事情发生了很大变化,我不确定该样本如何工作:
https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/WebAccountManagement
这使用“帐户管理器” UI窗口来显示主要用于获取访问令牌的Microsoft帐户的列表。我了解如何与窗口互动。我遇到的问题是OAuth端点,范围和应用ID。
仅供参考,我使用的是个人 Microsoft帐户。
我认为这是启用UWP应用程序使用此令牌服务的正确方法:
SingleMicrosoftAccountScenario
项目中,作为AccountClientId
。 这每次都会给我一个错误。这就是让我感到困惑的地方:
在我弄清楚这个Microsoft帐户资料之前,我一直处于困境。合并个人帐户和商业帐户确实使这一过程变得复杂了。
答案 0 :(得分:1)
这就是我发现的东西:
WebAuthenticationCoreManager
的Microsoft帐户,您只有两个权限,可让您在Windows 10中注册的PC上“查找”内置的 Microsoft 帐户。 “消费者”或“组织”。如果您使用“组织”权限,WebAuthenticationCoreManager
将使用v1 AAD端点为您获取令牌... 虽然理论上可以使用MS Graph,但我不能使其起作用。为了使它在示例中起作用,必须将添加的属性更改为WebTokenRequest
,如下所示。请注意,URL是不同的。我的范围是在应用程序注册网站上预设的。在https://apps.dev.microsoft.com注册应用程序时,您将使用融合应用程序ID,并且使用普通的Graph API范围,例如“ user.read”。
webTokenRequest.Properties.Add("resource", "https://graph.microsoft.com");
如果使用“消费者”权限,则根本不会获得与MS Graph兼容的令牌。相反,您会获得旧的Live API令牌。您可以通过使用此端点来获取带有令牌https://apis.live.net/v5.0/me的用户名来进行确认。虽然我可以仅使用此令牌来验证我的用户身份,但此API已被弃用,并将在2018年11月(下个月!)退出离线。因此,您似乎无法将其用于个人帐户。如果要使其正常工作,则需要使用Converged ID号,而要使用旧的Live API范围“ wl.basic”。
我的解决方法是根本不添加默认帐户,而是添加一个使用MSAL登录的自定义帐户。很烂,因为这仍然需要初始登录。很遗憾,因为我们已经使用该帐户登录了PC。似乎很愚蠢,我们需要再次输入凭据。