我创建了一个新的asp.net core 2 Web应用程序。我正在使用个人用户帐户并添加了我的Microsoft帐户以进行外部身份验证。所有这一切都像预期的那样。
现在我想使用Microsoft Graph来阅读我的.live个人资料,并最终阅读我的邮箱等内容。
我创建了一个身份验证提供程序,我能够获取访问令牌,但为什么我尝试使用访问令牌,虽然正确输入了clientId和secret,但我收到了Authorization_IdentityNotFound错误。
我认为这是因为我没有使用正确的参数来请求访问令牌。我想我忘记了登录我的.live帐户时通常会返回的授权响应代码。
有谁知道如何检索该响应代码或在asp.net core2中有一个工作示例。我能找到的唯一样本是.net核心1.1,从那以后事情发生了相当大的变化。
答案 0 :(得分:0)
你在这里混淆了几个不同的系统。
要访问Microsoft Graph API,您需要在通话的authorization
标题中传递访问令牌。这用于向Microsoft Graph提供您的标识以及存储数据的位置(您是租户)。
实际的访问令牌不是由Microsoft Graph发布的,它由您的租户发布。对于工作/学校帐户,这是您的帐户所在的Azure Active Directory租户。对于个人帐户,这是Outlook.com租户。
在收到访问令牌之前,您首先检索授权码。在您输入凭据后,这将返回到您传递给redirect_url
的{{1}}。然后,您的应用会使用此授权码并将其与访问令牌进行交换,您将用它来调用Microsoft Graph。
如果您正在寻找authentication library来处理此过程,则应使用MSAL.NET。您可以在GitHub上的microsoft-authentication-library-for-dotnet存储库中找到有关使用此库的说明。
获得令牌后,您可以直接致电Microsoft Graph,也可以使用Microsoft Graph Client Library for .NET。