Доступ запрещен, Office 365 / SharePoint онлайн с учетной записью глобального администратора

Я схожу с ума, так как два дня решаю проблему. Проблема в;

Я делаю консольное приложение, которое общается с SharePoint Online, используя глобальную учетную запись администратора (ту, которая была указана как администратор при создании новой подписки). То, чего я пытаюсь добиться, это то, что я хочу добавить настраиваемое действие с использованием CSOM к каждому семейству сайтов и дочернему сайту Office 365. Этот код прекрасно работает, за исключением корневого семейства сайтов, которое было предварительно создано Office 365 при регистрации (т.е.https://xyz.sharepoint.com)

Для любого арендатора для корневого семейства сайтов, это дает мне ошибку ниже;

{"SchemaVersion": "15.0.0.0", "LibraryVersion": "16.0.3912.1201", "ErrorInfo": {"ErrorMessage": "Доступ запрещен. У вас нет разрешения на выполнение этого действия или доступ к этому ресурсу.", «ErrorValue»: null, «TraceCorrelationId»: «2a47fd9c-c07b-1000-cfb7-cdffbe3ab83a», «ErrorCode»: - 2147024891, «ErrorTypeName»: «System.UnauthorizedAccessException»}, «TraceCorbareI»: 2 -4747 -cfb7-cdffbe3ab83a "}

Теперь пользователь является глобальным администратором. Я также снова добавил этого пользователя в качестве администратора семейства сайтов.

Тот же фрагмент кода отлично работает с другими семействами сайтов (семейство сайтов поиска, любое новое семейство сайтов ...).

вот код;

        using (ClientContext spcollContext = new ClientContext(web.Url))
        {
            SecureString passWord = new SecureString();
            foreach (char c in strAdminPassword.ToCharArray()) passWord.AppendChar(c);
            SharePointOnlineCredentials creds = new SharePointOnlineCredentials(strAdminUser, passWord);
            spcollContext.Credentials = creds;
            Web currentweb = spcollContext.Web;
            spcollContext.Load(currentweb);
            spcollContext.ExecuteQuery();

       //     authCookie = creds.GetAuthenticationCookie(new Uri(web.Url));

            var existingActions2 = currentweb.UserCustomActions;
            spcollContext.Load(existingActions2);
            spcollContext.ExecuteQuery();
            var actions2 = existingActions2.ToArray();
            foreach (var action in actions2)
            {
                if (action.Description == "CustomScriptCodeForEachsite" &&
                    action.Location == "ScriptLink")
                {
                    action.DeleteObject();
                    spcollContext.ExecuteQuery();
                }
            }

            var newAction2 = existingActions2.Add();
            newAction2.Description = "CustomScriptCodeForEachsite";
            newAction2.Location = "ScriptLink";

            newAction2.ScriptBlock = scriptBlock;
            newAction2.Update();
            spcollContext.Load(currentweb, s => s.UserCustomActions);
            spcollContext.ExecuteQuery(); // GETTING ERROR ON THIS LINE. 
        }

Примечание: вышеуказанная ошибка - это следы Fiddler.

Ответы на вопрос(1)

Ваш ответ на вопрос