Поделиться через


Включение внешнего общего доступа для семейств веб-сайтов в Office 365

Вы можете управлять параметрами внешнего общего доступа для семейства веб-сайтов SharePoint в Office 365, предоставляя внешним пользователям (у которых нет учетной записи организации в вашей подписке на Office 365) доступ к вашему семейству веб-сайтов.

Область применения: надстройки для SharePoint | SharePoint Online | Office 365

В примере кода Core.ExternalSharing показано, как управлять параметрами внешнего общего доступа в семействе веб-сайтов SharePoint. Используйте это решение для следующих задач:

  • Управление параметрами внешнего общего доступа в процессе подготовки сайта.

  • Подготовка семейства веб-сайтов для предоставления общего доступа внешним пользователям.

Примечание.

Параметры внешнего общего доступа доступны только в Office 365.

Подготовка

Чтобы приступить к работе, скачайте пример надстройки Core.ExternalSharing из проекта шаблонов и методик разработчиков Office 365 на сайте GitHub.

Использование приложения Core.ExternalSharing

Убедитесь, что в вашей подписке на Office 365 разрешен внешний общий доступ. Для этого сделайте следующее:

  1. Откройте Центр администрирования Office 365.

  2. В меню навигации слева выберите пункт SharePoint.

  3. В меню навигации слева выберите Пункт Общий доступ.

  4. В разделе Общий доступ за пределами организации убедитесь, что параметр Разрешить пользователям приглашать и предоставлять общий доступ внешним пользователям, прошедшим проверку подлинности , имеет значение Включено.

Проверьте параметры внешнего общего доступа для семейства веб-сайтов SharePoint. Для этого сделайте следующее:

  1. Откройте Центр администрирования Office 365.

  2. В меню навигации слева выберите SharePoint , чтобы открыть Центр администрирования SharePoint.

  3. В списке "Семейства веб-сайтов" установите флажок рядом с URL-адресом семейства веб-сайтов, для которого необходимо проверить параметры внешнего общего доступа.

  4. На ленте выберите Общий доступ.

  5. Проверьте параметры внешнего общего доступа в диалоговом окне общего доступа . Запустив пример кода, вернитесь к диалоговому окну доступ, чтобы убедиться, что параметры внешнего общего доступа изменились.

При выполнении этого примера кода main в Program.cs выполняет следующие задачи:

  • Получает URL-адрес Центра администрирования SharePoint.

  • Получает URL-адрес сайта семейства веб-сайтов для настройки параметров внешнего общего доступа.

  • Получает учетные данные администратора Office 365.

  • Вызывает метод GetInputSharing, который предлагает пользователю выбрать внешний параметр общего доступа ( SharingCapabilities) для применения к семейству веб-сайтов. Ниже перечислены доступные параметры внешнего общего доступа.

    • Параметр Disabled отключает внешний общий доступ к сайту.

    • Параметр ExternalUserAndGuestSharing включает общий доступ к сайту для внешних пользователей и гостей.

    • Параметр ExternalUserSharingOnly включает общий доступ только для внешних пользователей.

  • Вызовы SetSiteSharing.

Примечание.

Код, приведенный в этой статье, предоставляется "как есть" без какой-либо явной или подразумеваемой гарантии, включая подразумеваемые гарантии пригодности для какой-либо цели, для продажи или гарантии отсутствия нарушения прав иных правообладателей.

 static void Main(string[] args)
        {
           
            /* Prompt for your Office 365 admin center URL*/
            Console.WriteLine("Enter your Tenant Admin URL for your Office 365 subscription:");
            string tenantAdminURL = GetSite();

            /* End Program if no Office 365 admin center URL is supplied*/
            if (string.IsNullOrEmpty(tenantAdminURL))
            {
                Console.WriteLine("Hmm, i tried to work on it but you didn't supply your admin tenant url:");
                return;
            }
               
            // Prompt the user for an Office365 site collection 
            Console.WriteLine("Enter your Office 365 Site Collection URL:");
            string siteUrl = GetSite();

            /* Prompt for Credentials */
            Console.WriteLine("Enter Credentials for your Office 365 Site Collection {0}:", siteUrl);

            string userName = GetUserName();
            SecureString pwd = GetPassword();

            /* End program if no credentials are entered */
            if (string.IsNullOrEmpty(userName) || (pwd == null))
            {
                Console.WriteLine("Hmm, i tried to work on it but you didn't supply your credentials:");
                return;
            }

            try 
            {
                SharingCapabilities _sharingSettingToApply = GetInputSharing(siteUrl);
                using (ClientContext cc = new ClientContext(tenantAdminURL))
                { 
                    cc.AuthenticationMode = ClientAuthenticationMode.Default;
                    cc.Credentials = new SharePointOnlineCredentials(userName, pwd);
                    SetSiteSharing(cc, siteUrl, _sharingSettingToApply);
                }
            }
            catch(Exception ex)
            {
                Console.WriteLine("Oops, Mistakes can happen to anyone. An Error occured : {0}", ex.Message);
               
            }

            Console.WriteLine("Hit Enter to exit.");
            Console.Read();

        
        }

Метод SetSiteSharing выполняет следующие задачи:

  • Использует метод Tenant.GetSitePropertiesByUrl, чтобы получить объект SiteProperties для семейства веб-сайтов.

  • Использует Tenant.SharingCapability, чтобы определить, включен ли внешний общий доступ в вашей Office 365 подписке.

  • Если в подписке на Office 365 включен общий доступ, устанавливает для свойства SiteProperties.SharingCapability выбранный пользователем параметр внешнего общего доступа.

public static void SetSiteSharing(ClientContext adminCC, string siteCollectionURl, SharingCapabilities shareSettings)
        {
            var _tenantAdmin = new Tenant(adminCC);
            SiteProperties _siteprops = _tenantAdmin.GetSitePropertiesByUrl(siteCollectionURl, true);
            adminCC.Load(_tenantAdmin);
            adminCC.Load(_siteprops);
            adminCC.ExecuteQuery();

            SharingCapabilities _tenantSharing = _tenantAdmin.SharingCapability;
            var _currentShareSettings = _siteprops.SharingCapability;
            bool _isUpdatable = false;

            if(_tenantSharing == SharingCapabilities.Disabled)
            {
                Console.WriteLine("Sharing is currently disabled in your tenant! I am unable to work on it.");
            }
            else
            {  
                if(shareSettings == SharingCapabilities.Disabled)
                { _isUpdatable = true; }
                else if(shareSettings == SharingCapabilities.ExternalUserSharingOnly)
                {
                    _isUpdatable = true;   
                }
                else if (shareSettings == SharingCapabilities.ExternalUserAndGuestSharing)
                {
                    if (_tenantSharing == SharingCapabilities.ExternalUserAndGuestSharing)
                    {
                        _isUpdatable = true;
                    }
                    else
                    {
                        Console.WriteLine("ExternalUserAndGuestSharing is currently disabled in your tenant! I am unable to work on it.");
                    }
                }
            }
            if (_currentShareSettings != shareSettings && _isUpdatable)
            {
                _siteprops.SharingCapability = shareSettings;
                _siteprops.Update();
                adminCC.ExecuteQuery();
                Console.WriteLine("Set Sharing on site {0} to {1}.", siteCollectionURl, shareSettings);
            }
        }

См. также