Ошибка отказа в доступе (только чтение) при настройке contentTypeID через Graph

Мы используем Api Graph для установки типа контента документа SharePoint. Не меняя код, мы получаем ошибки отказа в доступе, начиная с 23 августа.

Мы выполняем "PATCH" для адреса "https://graph.microsoft.com/v1.0/sites/[companyName].sharepoint.com,[siteCollectionID]],[siteIdestive/lists/[listId]/items/[itemId]/fields "С данными запроса" {"ContentTypeId": "0x [ContentTypeID]"} "

В одной среде SharePoint Online это все еще работает, но в другой среде SharePoint Online мы получаем следующую ошибку: Код: «accessDenied» Сообщение: «Поле ContentTypeId доступно только для чтения»

Поскольку это происходит без каких-либо изменений кода, нам интересно, изменила ли Microsoft что-то в обновлении SharePoint Online или есть ли какой-либо параметр в сбойной среде SharePoint, который может вызвать это исключение?

Спасибо за любую помощь или предложения

Обновить

К сожалению, на выходных дела пошли еще хуже. Обновление нашей ситуации: у нас есть 2 среды SharePoint Online, которые мы сами администрируем, и 1 SP Online, который мы не контролируем. В пятницу 1 из моих сред все еще работал правильно, а 2 начали давать сбой. Теперь, в понедельник, все 3 среды выходят из строя. Я на 100% уверен, что мы не меняли код, а в двух средах SP я на 100% уверен, что мы не меняли никаких настроек.

Я пытаюсь изучить обновления SharePoint Online, используя план Office Roadmap (https://products.office.com/nl-NL/business/office-365-roadmap?filters=%26freeformsearch=SharePoint) или есть еще полезные места что я мог использовать?


person Christian    schedule 24.08.2018    source источник


Ответы (3)


Чтобы изменить тип содержимого элемента списка с помощью графического API, вы действительно хотите изменить фасет ContentType самого элемента, а не поля ContentType или ContentTypeID. Вот пример:

PATCH 

https://graph.microsoft.com/v1.0/sites/YOURTENANT.sharepoint.com:/sites/SITENAME:/lists/LISTNAME/items/1/

{
    "contentType": { "id": "0x0100D3426610C727AC42B5238A1FA52864F6" }
}

В этом случае это идентификатор моего основного типа элемента. Я не уверен, почему исправление поля ContentTypeId могло когда-либо работать, поскольку оно не является адресуемым полем в нашем базовом коде. Я собираюсь продолжить копать, чтобы увидеть, были ли недавно внесены изменения, но насколько я могу сказать прямо сейчас, это действительно не должно было работать раньше, поскольку ContentType - это сложный тип, который включает в себя как имя, так и идентификатор, поэтому исправление поля прямо не правильно.

person Jeremy Kelley - Microsoft    schedule 27.08.2018
comment
Отличный @Jeremy - Да, похоже, это так! Мы используем этот призыв как минимум 16 месяцев ;-), поэтому я удивлен, узнав, что он не сработал. Ты спас мне день! - person Christian; 28.08.2018

Я предполагаю, что в Graph внесены некоторые изменения. Протестировал вызовы в Postman, и я могу подтвердить, что вызов Graph перестал работать в нескольких средах, начиная с 23 августа. Насколько я могу судить, это не имеет ничего общего с настройками среды SharePoint.

В качестве обходного пути все еще кажется возможным изменить тип контента с помощью SharePoint REST Api.

PATCH {siteurl}/_api/web/lists(guid'{libraryId}')/items({id})
If-Match: {eTag}
X-HTTP-Method: Merge

{"ContentTypeId": "0x0101009E44B70FDF6D5D418E3B608C7DB4E8DB0100F24E9188A7EE514197DF449302E7D11C"}

Это немного раздражает, когда приходится возвращаться к SharePoint API для чего-то, что раньше работало с Graph.

person Leander van Eck    schedule 27.08.2018

После некоторого покопания я не вижу официальных сообщений от Microsoft, в которых говорится о каких-либо обновлениях, связанных с Sharepoint в Интернете. Но это может быть просто задержка или что-то, что они забыли.

Из вашего кода ошибки. Сообщение "accessDenied": "Поле ContentTypeId доступно только для чтения". Кажется, разрешения были изменены.

Я бы посоветовал вам проверить свой элемент Field, который определяет столбец сайта. Или сравните две свои онлайн-среды SharePoint, чтобы увидеть, изменились ли разрешения должным образом.

ReadOnly="TRUE" | "FALSE"
ReadOnlyEnforced="TRUE" | "FALSE"

Возможно, администратор сайта рассматривал возможность блокировки колонки, но забыл ее поднять. Иногда, когда создается новый столбец сайта, администратор SharePoint устанавливает его как только для чтения или как принудительно только для чтения, чтобы пользователь не мог редактировать данные, хранящиеся в поле. Это можно сделать либо через PowerShell, либо через CSOM.

Вот несколько ссылок и поле свойство.

person NaaHCat    schedule 27.08.2018
comment
Спасибо @NaaHCat за помощь. К сожалению, без каких-либо изменений (наслаждаясь выходными) и другие среды SP Online за выходные начали давать сбой. (См. Мое обновление вопроса) - person Christian; 27.08.2018