Compartir a través de


Establecer el uso compartido externo en colecciones de sitios en Office 365

Puede controlar la configuración de uso compartido externo en una colección de sitios de SharePoint en Office 365 para permitir que los usuarios externos (usuarios que no tienen una cuenta de organización en su suscripción a Office 365) obtengan acceso a su colección de sitios.

Se aplica a: complementos de SharePoint | SharePoint Online | Office 365

El ejemplo de código Core.ExternalSharing muestra cómo controlar la configuración de uso compartido externo en una colección de sitios de SharePoint. Use esta solución para:

  • Controlar la configuración de uso compartido externo durante el proceso de aprovisionamiento de sitio.

  • Preparar la colección de sitios para compartir con usuarios externos.

Nota:

La configuración de uso compartido externo solo está disponibles en Office 365.

Antes de empezar

Para empezar, descargue el complemento de ejemplo Core.ExternalSharing desde el proyecto de patrones y prácticas para desarrolladores de Office 365 en GitHub.

Uso de la aplicación Core.ExternalSharing

Compruebe que su suscripción a Office 365 permite el uso compartido externo. Para ello:

  1. Abra el centro de administración de Office 365.

  2. En el menú de navegación izquierdo, elija SharePoint.

  3. En el menú de navegación izquierdo, elija Compartir.

  4. En Uso compartido fuera de la organización, asegúrese de que Permitir que los usuarios inviten y compartan con usuarios externos autenticados está activado.

Compruebe la configuración del sitio externo en la colección de sitios de SharePoint. Para ello:

  1. Abra el centro de administración de Office 365.

  2. En el menú de navegación izquierdo, elija SharePoint para abrir el Centro de administración de SharePoint.

  3. En la lista de colecciones de sitios, seleccione la casilla situada junto a la dirección URL de la colección de sitios de la que desea comprobar la configuración de uso compartido externo.

  4. En la cinta de opciones, elija Compartir.

  5. Revise la configuración de uso compartido externo en el cuadro de diálogo de uso compartido . Después de ejecutar el código de ejemplo, vuelva al cuadro de diálogo uso compartido para comprobar que ha cambiado la configuración de uso compartido externo.

Al ejecutar este ejemplo de código, Main en Program.cs realiza las siguientes tareas:

  • Obtiene la dirección URL del Centro de administración de SharePoint.

  • Obtiene la dirección URL de la colección de sitios en la que configurar las opciones de uso compartido externo.

  • Obtiene las credenciales de administrador de Office 365.

  • Llama a GetInputSharing, que pide al usuario que elija una configuración de uso compartido externo ( Capacidades de uso compartido) para aplicarla a la colección de sitios. Las opciones de configuración de uso compartido externo son:

    • Deshabilitado, que desactiva el uso compartido externo en el sitio.

    • ExternalUserAndGuestSharing, lo que permite a un usuario externo y a un invitado el uso compartido en el sitio.

    • ExternalUserSharingOnly, que permite únicamente el uso compartido externo.

  • Llama a SetSiteSharing.

Nota:

El código de este artículo se proporciona tal cual, sin garantía de ningún tipo, expresa o implícita, incluidas las garantías implícitas de aptitud para un propósito particular, comerciabilidad o ausencia de infracción.

 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 hace lo siguiente:

  • Usa Tenant.GetSitePropertiesByUrl para recuperar SiteProperties en la colección de sitios.

  • Usa Tenant.SharingCapability para determinar si el uso compartido externo está habilitado en la suscripción de Office 365.

  • Si el uso compartido de su suscripción de Office 365 está habilitado, establece la SiteProperties.SharingCapability en la configuración de uso compartido especificada por el usuario externo.

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

Vea también