Включение внешнего общего доступа для семейств веб-сайтов в 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 разрешен внешний общий доступ. Для этого сделайте следующее:
Откройте Центр администрирования Office 365.
В меню навигации слева выберите пункт SharePoint.
В меню навигации слева выберите Пункт Общий доступ.
В разделе Общий доступ за пределами организации убедитесь, что параметр Разрешить пользователям приглашать и предоставлять общий доступ внешним пользователям, прошедшим проверку подлинности , имеет значение Включено.
Проверьте параметры внешнего общего доступа для семейства веб-сайтов SharePoint. Для этого сделайте следующее:
Откройте Центр администрирования Office 365.
В меню навигации слева выберите SharePoint , чтобы открыть Центр администрирования SharePoint.
В списке "Семейства веб-сайтов" установите флажок рядом с URL-адресом семейства веб-сайтов, для которого необходимо проверить параметры внешнего общего доступа.
На ленте выберите Общий доступ.
Проверьте параметры внешнего общего доступа в диалоговом окне общего доступа . Запустив пример кода, вернитесь к диалоговому окну доступ, чтобы убедиться, что параметры внешнего общего доступа изменились.
При выполнении этого примера кода 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);
}
}