Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Modifier les autorisations des sites SharePoint et d'obtenir l'état de partage externe

Modifier les propriétés des administrateurs de collection de sites à l'aide de CSOM. Obtenir l'état de partage externe et les utilisateurs externes d'une collection de sites ou le client.

Dernière modification :mercredi 12 août 2015

S’applique à :Office 365 | SharePoint 2013 | SharePoint Add-ins | SharePoint Online

Note Remarque

Le nom « Applications pour SharePoint » est remplacé par « Compléments SharePoint ». Lors de la période de transition, il se peut que la documentation et l’interface utilisateur de certains produits SharePoint et outils Visual Studio utilisent toujours le terme « applications pour SharePoint ». Pour plus d’informations, voir Nouveau nom des applications pour Office et SharePoint.

Vous pouvez utiliser l'exemple Core.SitePermissions pour modifier les administrateurs de collection de sites sur n'importe quelle collection de sites, notamment ceux liés aux OneDrive Entreprise sur Office 365 locataires. Cet exemple montre également comment obtenir l'état de partage externe pour les installations d'Office 365 mutualisé.

À l'aide d'une application console, vous créez un objet ClientContext pour obtenir des autorisations pour répertorier et/ou modifier les administrateurs et obtenez l'état de partage externe. Vous créez également une macro complémentaire enregistrée à l'aide de jetons OAuth.

Contribuer à ce contenu

Vous pouvez obtenir les dernières mises à jour ou contribuer à cet article sur Github. Vous pouvez également contribuer à cet article et d’autres exemples sur GitHub. Pour obtenir la liste complète des exemples, consultez le Centre des développeurs des pratiques et modèles. Nous accueillons avec plaisir vos contributions.

Pour commencer, téléchargez le complément exemple Core.SitePermissions à partir du projet de pratiques et modèles de développeur Office 365 sur les référentiels.

Pour mettre à jour les administrateurs d'une collection de sites, vous devez être administrateur de la collection de sites. La première étape consiste à créer un objet ClientContext par un utilisateur avec les autorisations appropriées.

Remarque Remarque

Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.

ClientContext cc = new AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant(String.Format("https://{0}.sharepoint.com/sites/{1}", tenantName, siteName), String.Format("{0}@{1}.onmicrosoft.com", userName, tenantName), password); 

À l'aide de l'objet ClientContext , vous pouvez obtenir une liste du site actuel des administrateurs de collection ou mettre à jour des administrateurs de collection de sites, comme illustré dans l'exemple suivant.

List<UserEntity> admins = cc.Web.GetAdministrators();

List<UserEntity> adminsToAdd = new List<UserEntity>();
adminsToAdd.Add(new UserEntity() { LoginName = "i:0#.f|membership|user@domain" });

cc.Web.AddAdministrators(adminsToAdd);

UserEntity adminToRemove = new UserEntity() { LoginName = "i:0#.f|membership|user@domain" };
cc.Web.RemoveAdministrator(adminToRemove);

Vous pouvez définir le site administrateurs de collection pour les collections de sites où vous n'êtes pas un administrateur de collection de sites en créant un objet ClientContext en utilisant une macro complémentaire enregistrée. Dans ce cas, l'objet ClientContext est basé sur un jeton OAuth avec des autorisations au niveau du client.

// Use (Get-MsolCompanyInformation).ObjectID to obtain Target/Tenant realm: <guid>
//
// Manually register an add-in via the appregnew.aspx page and generate an add-in ID and 
// add-in secret. The add-in title and add-in domain can be a simple string like "MyAddin".
//
// Update the add-in ID in your worker role settings.
//
// Add the add-in secret in your worker role settings. 
//
// Manually set the permission XML for you add-in via the appinv.aspx page:
// 1. Look up your add-in via its add-in ID.
// 2. Paste the permission XML and choose create.
//
// Sample permission XML:
// <AppPermissionRequests AllowAppOnlyPolicy="true">
//   <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
// </AppPermissionRequests>
//
// Because you're granting tenant-wide full control to an add-in, the add-in secret is as important
// as the password from your SharePoint administration account.

Une fois que vous avez fait, vous pouvez utiliser le code suivant pour obtenir un objet ClientContext pour ce complément.

ClientContext cc = new AuthenticationManager().GetAppOnlyAuthenticatedContext("https://tenantname-my.sharepoint.com/personal/user2", "<your tenant realm>", "<appID>", "<appsecret>");

Ce scénario montre comment obtenir l'état de partage externe d'une collection de sites et obtenir la liste des utilisateurs externes pour une collection de sites spécifique ou pour le client entière. Parce que ceci exige les bibliothèques CSOM client, vous devez créer un ClientContext par rapport à la collection de sites d'administration client. Le compte d'utilisateur doit être un compte d'administrateur client.

ClientContext ccTenant = new AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant(String.Format("https://{0}-admin.sharepoint.com/", tenantName), String.Format("{0}@{1}.onmicrosoft.com", userName, tenantName), password);

Une fois que le ClientContext est prêt, vous pouvez utiliser le code suivant pour obtenir l'état de partage externe et une liste d'utilisateurs externes.

ccTenant.Web.GetSharingCapabilitiesTenant(new Uri(String.Format("https://{0}.sharepoint.com/sites/{1}", tenantName, siteName)))

List<ExternalUserEntity> externalUsers = ccTenant.Web.GetExternalUsersForSiteTenant(new Uri(String.Format("https://{0}.sharepoint.com/sites/{1}", tenantName, siteName)));

List<ExternalUserEntity> externalUsers = ccTenant.Web.GetExternalUsersTenant();

Afficher: