Compartilhar via


Definir compartilhamento externo em conjuntos de sites no Office 365

É possível controlar as configurações de compartilhamento externo em um conjunto de sites do SharePoint no Office 365, permitindo que usuários externos (usuários que não têm uma conta organizacional em sua assinatura do Office 365) acessem seu conjunto de sites.

Aplica-se a: suplementos do SharePoint | SharePoint Online | Office 365

O exemplo de código Core.ExternalSharing mostra como controlar suas configurações de compartilhamento externo em uma coleção de sites do SharePoint. Use esta solução para:

  • Controlar as configurações de compartilhamento externo durante o processo de provisionamento do site.

  • Preparar sua coleção de sites para compartilhamento com usuários externos.

Observação

As configurações de compartilhamento externo estão disponíveis apenas no Office 365.

Antes de começar

Para começar, baixe o suplemento de exemplo Core.ExternalSharing do projeto de padrões e práticas do desenvolvedor Office 365 no GitHub.

Usar o aplicativo Core.ExternalSharing

Verifique se sua assinatura do Office 365 permite o compartilhamento externo. Para fazer isso:

  1. Abra seu Office 365 centro de administração.

  2. No menu de navegação à esquerda, escolha SharePoint.

  3. No menu de navegação à esquerda, escolha Compartilhamento.

  4. No compartilhamento fora de sua organização, verifique se permitir que os usuários convidem e compartilhem com usuários externos autenticados está Ativado.

Verifique as configurações do site externo em seu conjunto de sites do SharePoint. Para fazer isso:

  1. Abra seu Office 365 centro de administração.

  2. No menu de navegação à esquerda, escolha SharePoint para abrir o centro de administração do SharePoint.

  3. Na Lista de conjuntos de sites, marque a caixa de seleção ao lado da URL do conjunto de sites no qual você deseja verificar suas configurações de compartilhamento externo.

  4. Na faixa de opções, escolha Compartilhar.

  5. Examine suas configurações de compartilhamento externo na caixa de diálogo de compartilhamento . Depois de executar o código de exemplo, retorne à caixa de diálogo compartilhamento para verificar as configurações de compartilhamento externo que foram alteradas.

Ao executar este exemplo de código, o Main in Program.cs executa as seguintes tarefas:

  • Obtém a URL do Centro de Administração do SharePoint.

  • Obtém a URL do conjunto de sites para definir configurações de compartilhamento externo.

  • Obtém as credenciais de administrador do Office 365.

  • Chama GetInputSharing, o que solicita que o usuário escolha uma configuração de compartilhamento externo ( SharingCapabilities) para se aplicar à coleção de sites. As opções de configurações de compartilhamento externo incluem:

    • Desabilitado, que desativa o compartilhamento externo do site.

    • ExternalUserAndGuestSharing, que permite o compartilhamento de usuários externos e convidados no site.

    • ExternalUserSharingOnly, que permite apenas o compartilhamento de usuários externos.

  • Chama SetSiteSharing.

Observação

The code in this article is provided as-is, without warranty of any kind, either express or implied, including any implied warranties of fitness for a particular purpose, merchantability, or non-infringement.

 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 faz o seguinte:

  • Usa Tenant.GetSitePropertiesByUrl para recuperar SiteProperties no conjunto de sites.

  • Usa Tenant.SharingCapability para determinar se o compartilhamento externo está habilitado em sua assinatura Office 365.

  • Se o compartilhamento está habilitado em sua assinatura do Office 365, define SiteProperties.SharingCapability as configurações de compartilhamento externo para o usuário inserido.

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);
            }
        }

Confira também