使用 Microsoft Graph 通过查找 ID 获取 SharePoint 用户

问题描述 投票:0回答:2

我在 Microsoft Graph 中执行以下查询:

var results = await SPLists["<my-list-name>"]
                .Items
                .Request()
                .Expand("fields")
                .GetAsync(); 

它获取我在 SharePoint 中拥有的列表的列表项。该列表中的一列的类型为“个人或组”。在 Microsoft Graph 的响应中,它返回如下所示的列数据(例如):

{
    "LookupId": 335,
    "LookupValue": "John Doe"
}

我如何利用这些数据?如何使用 Microsoft Graph 获取 ID 为

355
的人员的完整个人资料?我需要返回者的电子邮件地址。如何使用 Microsoft Graph SDK 获取该信息?

sharepoint microsoft-graph-api sharepoint-list sharepoint-api
2个回答
4
投票

Look Id 335是名为“用户信息列表”的SharePoint隐藏列表中的Id,您可以使用请求获取列表guid:

https://graph.microsoft.com/v1.0/sites/site-id/lists?$filter=DisplayName eq 'User Information List'

然后使用下面端点中的列表guid来获取详细的电子邮件地址:

https://graph.microsoft.com/v1.0/sites/site-id/lists/UserInformationListId/items/335

这里有一个类似的帖子供您参考:

如何从User字段LookupId获取用户


0
投票

下面是一个 C# 示例,它查询隐藏的 SharePoint“用户信息列表”,然后提取用户查找 ID 和电子邮件地址。

string siteId = "ADD_YOUR_SITE_ID_HERE";

// Query the "User Information List" to get the users info
var userInfoList = await graphClient.Sites[siteId].Lists.GetAsync((request) =>
{
    request.QueryParameters.Filter = $"DisplayName eq 'User Information List'";
});

if (userInfoList == null || userInfoList.Value == null || !userInfoList.Value.Any())
{
    Console.WriteLine($"User Information List not found");
    return;
}

// The first record is the User Information List ID
var listId = userInfoList.Value.First().Id;

var userList = await graphClient.Sites[siteId].Lists[listId].Items.GetAsync((request) =>
{
    request.QueryParameters.Expand = new string[] { $"fields($select=EMail)" };
    request.QueryParameters.Top = 1000; // Default is 200, so I increased it
});

if (userList == null || userList.Value == null)
{
    Console.WriteLine($"No user records found");
    return;
}

foreach (var item in userList.Value)
{
    var listData = item.Fields?.AdditionalData;
    string userInfo = $"Lookup ID: {item.Id}";
    if(listData != null && listData.ContainsKey("EMail"))
        userInfo += $", Email: {listData?["EMail"].ToString()}";
    Console.WriteLine(userInfo);
}
© www.soinside.com 2019 - 2024. All rights reserved.