Merhaba arkadaşlar bugün sizlere sharepoint online üzerinde user profile tarafında istenilen bir kullanıcının herhangi bir özelliğini konsol uygulaması kullanarak nasıl güncelleyebileceğimizden bahsedeceğim.
Tabi ki çoğu şeyde olduğu gibi bu taraftada sharepoint server side tarafa göre değişikşikler yer almaktadır.
Visual studio üzerinde projemizi oluşturuyoruz. İlk olarak oluşturmuş olduğumuz projeye aşağıdaki referansları eklememiz gerekiyor.
- Microsoft.SharePoint.Client ( Version : 16.0.0.0 )
- Microsoft.SharePoint.Client.Runtime ( Version : 16.0.0.0 )
- Microsoft.SharePoint.Client.UserProfiles ( Version: 16.0.0.0 )
- System.Configuration ( Version : 4.0.0.0 ) — Bu referans ise App.config dosyasından AppSettings ile online erişim bilgilerimizi dinamik olarak alabilmemiz için.
Bu referansları projemize dahil ettikten sonra her zamanki gibi sharepoint online tarafında login olamız için static şekilde verilere erişebilmemiz daha rahat olacağı için App.config tarafında erişim bilgilerimizi alacağız.
NOT: Yalnız burada bir farkımız olacak bu da sharepoint online tarafta biz user profile kısmından kullanıcılar erişmemiz gerekeceği için bizim sharepoint online sitemize değil sharepoint online administrator tarafına bağlanmamız gerekecektir ve bağlanılacak kullanıcı bilgisinin tanent admin gibi burada değişiklik yapabilme yetkilerine sahip olması gerekiyor. Site adresi olarak ise “https://yunusemrearac-admin.sharepoint.com/” şeklinde admin adresi olacaktır.
1 2 3 4 5 |
<appSettings> <add key="TenantAdministrationUrl" value=""/> <add key="TenantAdminLoginName" value=""/> <add key="TenantAdminPassword" value=""/> </appSettings> |
App config tarafında yukarıdaki gibi tanımlamalarımızı dediğim şartlara uygun şekilde yaparak değerlerimizi giriyoruz ve bunları kod tarafında okumamız gerekecektir.
1 2 3 |
string tenantAdministrationUrl = ConfigurationManager.AppSettings["TenantAdministrationUrl"].ToString(); string tenantAdminLoginName = ConfigurationManager.AppSettings["TenantAdminLoginName"].ToString(); string tenantAdminPassword = ConfigurationManager.AppSettings["TenantAdminPassword"].ToString(); |
Kod tarafında yukarıdaki gibi bu app config tarafına tanımladığımız değerleri alarak değişkenlerimize atama yapıyoruz. Daha sonra bu bilgiler ile sisteme giriş yapıyoruz.
1 2 3 4 5 6 7 8 |
using (ClientContext clientContext = new ClientContext(tenantAdministrationUrl)) { SecureString passWord = new SecureString(); foreach (char c in tenantAdminPassword.ToCharArray()) passWord.AppendChar(c); clientContext.Credentials = new SharePointOnlineCredentials(tenantAdminLoginName, passWord); } |
Daha sonra bu aldığımız bilgiler ile ClientContext kullanarak sisteme giriş yapıyoruz. Bu konu ile ilgili detaylı yazımı okumak için tıklayınız.
Bu kısımda değişiklik yapacağımız kullanıcının User Account Name bilgisi gerekmektedir. Bu kısımda aslında kullanıcının mail adresinin başına “i:0#.f|membership|” tanımlamasının eklenmesi yapılarak oluşturulmuş bir değerdir. Bundan dolayı da değişiklik yapmak istenilen kullanıcının sadece mail adresi üzerinden gidilebilir.
1 |
string UserAccountName = "i:0#.f|membership|" + email; |
Kod kısmında kullanıcının mail adresini account name olarak çevirebileceğim bir tanımlamayı da yukarıdaki gibi ekliyorum.
Daha sonra da PeopleManager üzerinde yer alan SetSingleValueProfileProperty metodunu kullanarak kullanıcı account name, property adı ve değerini yollayarak gerekli güncellememizi yapıyoruz.
1 2 3 4 5 |
PeopleManager peopleManager = new PeopleManager(clientContext); peopleManager.SetSingleValueProfileProperty(UserAccountName, property, value); clientContext.ExecuteQuery(); |
Bu kısımda daha kolay bir şekilde ilerleyebilmek için tüm bu işlemleri ben bir method haline getirdim ve hepsini bir araya topladığımda aşağıdaki gibi bir method oluşmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public static bool UpdateSharepointOnlineUserProfileProperty(string email, string property, string value) { bool updateResult = false; try { string tenantAdministrationUrl = ConfigurationManager.AppSettings["TenantAdministrationUrl"].ToString(); string tenantAdminLoginName = ConfigurationManager.AppSettings["TenantAdminLoginName"].ToString(); string tenantAdminPassword = ConfigurationManager.AppSettings["TenantAdminPassword"].ToString(); string UserAccountName = "i:0#.f|membership|" + email; using (ClientContext clientContext = new ClientContext(tenantAdministrationUrl)) { SecureString passWord = new SecureString(); foreach (char c in tenantAdminPassword.ToCharArray()) passWord.AppendChar(c); clientContext.Credentials = new SharePointOnlineCredentials(tenantAdminLoginName, passWord); PeopleManager peopleManager = new PeopleManager(clientContext); peopleManager.SetSingleValueProfileProperty(UserAccountName, property, value); clientContext.ExecuteQuery(); updateResult = true; } } catch (Exception ex) { Console.WriteLine("Sharepoint User Property güncellenirken hata oluştu. User Email : " + email + " Error : "); Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } return updateResult; } |
Bunun yanı sıra kodun çalışan hali için aşağıdaki güthub adresinden indirebilirsiniz.
İlk Yorumu Siz Yapın