microsoft-graph-api - 使用 Microsoft.Graph 库进行仅限应用程序的 Microsoft Graph 身份验证

标签 microsoft-graph-api

我使用仅应用程序流程成功检索了 Microsoft Graph API 的访问 token ,但生成的 token 似乎无法访问任何内容。

这是我正在使用的身份验证代码:

var clientApp = new ConfidentialClientApplication(
    identifier,
    authority,
    "urn:ietf:wg:oauth:2.0:oob",
    new ClientCredential(secret), null, null);
var scopes = new string[] { $"{identifier}/.default" };
AuthenticationResult authResult = await clientApp.AcquireTokenForClientAsync(scopes);
return authResult.AccessToken;

由此,我确实获得了一个 token ,但是当我尝试使用它时,它会抛出访问 token 验证失败。这是我一直在使用的测试查询:

var users = service.Users.Request()
    .Filter($"mail eq '{resourceIdentifier}'")
    .Top(1)
    .GetAsync();
users.Wait();

对于 API baseUrl,我提供:https://graph.windows.net/{appId}。我确实将 api-version=1.6 添加到查询字符串(手动,因为我没有看到通过 Microsoft.Graph NuGet 库公开的选项)。我之前尝试过 https://graph.microsoft.com/v2.0,也无济于事。

无论如何,鉴于有关验证失败的错误消息,我开始相信我们的(可能是特定于租户的?)API URI 可能是错误的。会是这样吗?我没看到什么?

更新

该解决方案有两个组成部分。第一个是在接受的答案中提到的。第二个是范围应该是,简单地,https://graph.microsoft.com/.default,尽管我的 API 调用是特定于租户的。

最佳答案

您在这里混淆了两个不同的 API。

graph.windows.net URI 用于 Azure AD Graph,这是一个完全不同的 API。对于 Microsoft Graph,URI 应为 graph.microsoft.com

目前还没有 Microsoft Graph 的 /v2.0。公开可用的版本是 /v1.0/beta。另请注意,使用 Microsoft Graph Client Library for .NET 时您不需要提供 baseUrl,因为它已默认为 https://graph.microsoft.com/v1.0

关于microsoft-graph-api - 使用 Microsoft.Graph 库进行仅限应用程序的 Microsoft Graph 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48390771/

相关文章:

c# - 无法使用 Microsoft Graph API 创建事件

Azure Graph API - 在获取消息服务调用中包含电子邮件总数

azure - Outlook 加载项中单个用户的 Microsoft Graph 访问 token

c# - MS Graph api : Timeout when converting docx to pdf

c# - 如何在 Microsoft Graph API 中为 UpdateAsync 编写服务测试(在单个请求中将多个成员添加到组)

php - 使用 Microsoft-graph php-sdk 创建事件

azure-active-directory - 通过 Microsoft Graph API 在 Azure AD 中邀请用户不起作用

c# - 在 C# 中创建 MS Teams 团队 - AddAsync 返回 null

c# - 如何使用 .Net Client SDK 从 Microsoft Graph 获取我所属的管理员角色?

azure-active-directory - 无法使用 beta Graph API 创建密码 AAD 应用程序