使用 Microsoft Graph 在 Sharepoint Online 站点中获取当前用户的角色

Get role of current user in Sharepoint Online site using Microsoft Graph

我正在构建一个 .net 核心 Web 应用程序,我在其中使用 AzureAD 身份验证和 Microsoft Graph 从共享点在线站点获取数据。

我需要获取当前用户的群组。

我尝试使用 graphClient.Me.MemberOf.Request().GetAsync();

我想我正在获取 Azure 目录中的用户角色。

但我想要特定 Sharepoint 在线站点的当前用户的角色。

是否可以获取此信息以及如何获取?

我找不到使用 Microsoft Graph 获取此信息的有效方法。

编辑:

因为 Microsoft Graph 不允许获取该数据。 我尝试调用以下 Sharepoint Online API 端点:

https://{name}.sharepoint.com/sites/{name}/_api/web/currentUser?$select=Groups/Title &$expand=群组

使用这个 api 端点,我可以在我的浏览器中看到当前用户的所有角色。 但是我找不到如何从我的 .net 核心网络应用程序中调用它。

尝试了以下方法:

        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Content-types", "application/json;odata=verbose");
        var response = await client.GetAsync("https://{name}.sharepoint.com/sites/{name}/_api/web/currentUser?$select=Groups/Title&$expand=Groups");
        if (response.IsSuccessStatusCode)
        {
            var json = await response.Content.ReadAsStringAsync();
        }

但这给了我一个 403 响应。

编辑 2:

我目前正在尝试使用 CSOM 获取此信息(TCUE.NetCore.SharepointOnline.CSOM.16.1.8029.1200.)

但我找不到获取 TokenHelper.cs 的方法。

        var token = TokenHelper.GetAppOnlyAccessToken(SharePointPrincipalId, webUri.Authority, null).AccessToken;

        var ctx = TokenHelper.GetClientContextWithAccessToken(webUri.ToString(), token);

我尝试添加 "AppForSharePointOnlineWebToolkit" 但它没有在项目中添加所需的文件。

如何获取 TokenHelper.cs 文件?

感谢您的帮助。

特里斯坦

没有。 Microsoft Graph 不会公开允许您获取 SharePoint 组及其成员信息的端点。

如果你有这个需求,你可以在 Microsoft Graph UserVoice 上给这个想法投票。

要在 .net 核心中执行 CSOM 代码,请执行以下设置。

我们可以安装如下包。

安装包 TTCUE.NetCore.SharepointOnline.CSOM.16.1.8029.1200 - 版本 16.1.8029.1200 更多信息在这里:TTCUE.NetCore.SharepointOnline.CSOM.16.1.8029.1200

或使用 GitHub 中的以下解决方案:NetCore.CSOM

或按照以下步骤操作。

1.Create .NET Core 控制台应用程序。

2.Add 参考文献:Microsoft.SharePoint.Client.Portable.dll、Microsoft.SharePoint.Client.Runtime.Portable.dll 和 Microsoft.SharePoint.Client.Runtime.Windows.dll。

注意:如果项目引用了 Microsoft.SharePoint.Client.dll 和 Microsoft.SharePoint.Client.Runtime.dll,请将其删除。

可以通过将 CSOM 库安装到另一个项目,然后导航到文件目录中已安装的 nuget 包来访问这些引用:c:\Users\user.nuget\packages\microsoft.sharepointonline.csom(版本)\lib\netcore45

3.Add .NET Core 2.0 控制台应用程序下面的代码:

获取当前用户角色:

获取当前用户角色,可以使用Web.GetUserEffectivePermissions方法。

例如:

ClientResult<BasePermissions> permission= web.GetUserEffectivePermissions(name);
context.ExecuteQuery();
 var res = permission.Value;

参考下面 link 使用访问令牌获取 clientcontext:https://www.sharepointpals.com/post/how-to-get-the-client-context-using-app-access-token-by-passing-client-id-and-client-secret-id-using-csom-in-sharepoint-office-365/