尝试使用Sharepoint和Microsoft Graph api获取通用列表的所有记录

时间:2016-11-30 08:41:17

标签: sharepoint microsoft-graph

尝试在SharePoint中获取列表记录时,我会不断获得响应:

{"@odata.context":"https://graph.microsoft.com/beta/$metadata#users('123')/sharepoint/sites('456')/lists('789')/items","value":[]}

我能够浏览所有网站和列表,但仍然无法使用项目。该列表具有GenericList模板。但是在使用模板DesignCatalog的另一个列表中,我能够获得所有项目。 “/ items”是获取通用列表记录的错误方法吗?

以下是我当前代码的片段:

            const string serviceEndpoint = "https://graph.microsoft.com/beta/";

            HttpClient client = new HttpClient();
            var token = await _authenticationHelper.GetTokenAsync();
            client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);

            // get the site
            HttpResponseMessage responseGetSites = await client.GetAsync(new Uri(serviceEndpoint + "sharePoint:/Intranet"));
            if (responseGetSites.IsSuccessStatusCode)
            {
                string responseContent = await responseGetSites.Content.ReadAsStringAsync();
                var jResult = JObject.Parse(responseContent);
                siteItem = JsonConvert.DeserializeObject<SiteItemModel>(jResult.ToString());

                // get all lists with the given site id
                HttpResponseMessage responseGetLists = await client.GetAsync(new Uri(serviceEndpoint + "sharepoint/sites/" + siteItem.SiteId + "/lists"));
                if (responseGetLists.IsSuccessStatusCode)
                {
                    string responseContent2 = await responseGetLists.Content.ReadAsStringAsync();
                    var jResult2 = JObject.Parse(responseContent2);

                    foreach (JObject listresponse in jResult2["value"])
                    {
                        ListItemModel desiralizedItemModel = JsonConvert.DeserializeObject<ListItemModel>(listresponse.ToString());
                        listItemCollection.Add(desiralizedItemModel);
                    }

                    // find a specific list
                    string listId = listItemCollection.Where(w => w.listName == "MyTestlist").First().listId;

                    // get all records with of the given list
                    HttpResponseMessage responseGetItems = await client.GetAsync(new Uri(serviceEndpoint + "sharepoint/sites/" + siteItem.SiteId + "/lists/" + listId + "/items"));
                    if (responseGetItems.IsSuccessStatusCode)
                    {
                        string responseContent3 = await responseGetItems.Content.ReadAsStringAsync();
                        var jResult3 = JObject.Parse(responseContent3);

1 个答案:

答案 0 :(得分:0)

我有同样的问题。我必须在MS Graph下而不是在共享点下添加“ Sites.ReadWrite.All”权限(我也在写列表,但“ Sites.Read.All”应该可以)。