【问题标题】:Get role of current user in Sharepoint Online site using Microsoft Graph使用 Microsoft Graph 在 Sharepoint Online 站点中获取当前用户的角色
【发布时间】:2020-01-10 18:37:58
【问题描述】:

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

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

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

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

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

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

我没有找到使用 Microsoft Graph 的有效方法。

编辑:

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

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

使用这个 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 文件?

感谢您的帮助。

特里斯坦

【问题讨论】:

    标签: .net-core azure-active-directory microsoft-graph-api sharepoint-online csom


    【解决方案1】:

    要在 .net core 中执行 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.创建 .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)\lib\ netcore45

    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/

    【讨论】:

    • 似乎使用 CSOM 我们需要传递硬编码凭据,而我不想这样做..
    • 对于在线,您可以使用访问令牌。
    • 好的,我将使用访问令牌查看 clientcontext 的链接。
    【解决方案2】:

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

    如果您有此要求,您可以在Microsoft Graph UserVoice 上投票。

    【讨论】:

    • 好的,如果没有 Microsoft Graph,还有其他方法可以实现吗?
    • 是的。目前您需要使用 CSOM 来实现它。请参阅 Sriram 的回答。
    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2017-06-10
    • 2020-04-08
    • 2021-12-08
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多