Freigeben über


Ändern von SharePoint-Websiteberechtigungen und Abrufen von status für die externe Freigabe

Sie können das Core.SitePermissions-Beispiel verwenden, um die Websitesammlungsadministratoren für jede Websitesammlung zu ändern, einschließlich derjenigen für OneDrive for Business auf Office 365 Mandanten. In diesem Beispiel wird auch gezeigt, wie Sie externe status für Office 365 mehrinstanzenfähige Installationen erhalten.

Mithilfe einer Konsolenanwendung erstellen Sie ein ClientContext-Objekt, um Berechtigungen zum Auflisten und/oder Ändern von Administratoren und zum Abrufen externer Freigaben status zu erhalten. Sie erstellen auch ein registriertes Add-In mithilfe von OAuth-Token.

Bevor Sie beginnen

Laden Sie zunächst das Beispiel-Add-In Core.SitePermissions aus dem Projekt Office 365 Developer Patterns and Practices auf GitHub herunter.

Hinweis

Der Code in diesem Artikel wird wie besehen und ohne jegliche Garantie zur Verfügung gestellt, gleich ob ausdrücklich oder konkludent, einschließlich jedweder stillschweigenden Gewährleistung der Eignung für einen bestimmten Zweck, Marktgängigkeit oder Nichtverletzung von Rechten.

Arbeiten mit Websitesammlungsadministratoren

Um die Administratoren einer Websitesammlung zu aktualisieren, müssen Sie Administrator für die Websitesammlung sein. Der erste Schritt besteht darin, ein ClientContext-Objekt von einem Benutzer mit den richtigen Berechtigungen zu erstellen.

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

Mithilfe des ClientContext-Objekts können Sie eine Liste der aktuellen Websitesammlungsadministratoren abrufen oder die Websitesammlungsadministratoren aktualisieren, wie im folgenden Beispiel gezeigt.

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

Sie können die Websitesammlungsadministratoren für Websitesammlungen festlegen, für die Sie noch kein Websitesammlungsadministrator sind, indem Sie mithilfe eines registrierten Add-Ins ein ClientContext-Objekt erstellen. Hier basiert das ClientContext-Objekt auf einem OAuth-Token mit Berechtigungen auf Mandantenebene.

// 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 your 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.

Anschließend können Sie den folgenden Code verwenden, um ein ClientContext-Objekt für dieses Add-In abzurufen.

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

Arbeiten mit externer Freigabe (nur Office 365 MT)

In diesem Szenario wird gezeigt, wie Sie die externe Freigabe status einer Websitesammlung und eine Liste externer Benutzer für eine bestimmte Websitesammlung oder für den gesamten Mandanten abrufen. Da hierfür die MANDANTEN-CSOM-Bibliotheken erforderlich sind, müssen Sie einen ClientContext für die Mandantenadministratorwebsitesammlung erstellen. Das Benutzerkonto muss ein Mandantenadministratorkonto sein.

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

Nachdem clientContext bereit ist, können Sie den folgenden Code verwenden, um die externe Freigabe status und eine Liste der externen Benutzer abzurufen.

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

Siehe auch