使用 Microsoft 图形获取 SharePoint Online 网站中当前用户的角色



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

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

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

我想我在 Azure 目录中获得了用户的角色。

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

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

我没有找到使用Microsoft图形获得此方法的工作方法。

编辑:

因为Microsoft Graph不允许获取这些数据。 我尝试调用以下 SharePoint Online API 终结点:

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

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

已尝试以下方法:

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.(

但是我没有找到获得令牌助手的方法.cs。

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

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

如何获取令牌助手.cs文件?

感谢您的任何帮助。

特里斯坦

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

我们可以按如下方式安装软件包。

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

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

或按照以下步骤操作。

1.创建 .NET Core 控制台应用。

2.添加引用: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(version(\libetcore45

3.将以下代码添加到 .NET Core 2.0 控制台应用程序:

获取当前用户角色:

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

前任:

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

请参阅以下链接以使用访问令牌获取客户端上下文: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/

No.Microsoft Graph 不会公开允许您获取 SharePoint 组及其成员信息的终结点。

如果你有这个要求,你可以在Microsoft图形用户语音上投票。

最新更新