使用 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/
我正在构建一个 .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/