Newsfeed Postings können in SharePoint auch mittels Client Object Model durchgeführt werden. Dafür muss die dll “Microsoft.SharePoint.Client.UserProfiles” aus dem ISAPI Verzeichnis referenziert werden.
Das Posting selbst muss mit einem ClientContext für den SP User durchgeführt werden. Ein Versuch mit einem App ClientContext schlägt fehl. Da in meinem BSP mit Office365 gearbeitet wird, müssen Credentials für SharePoint Online verwendet werden. (zeile 8 bis 11)
Ein Post wird mit der Methode CreatePost (Zeile 19) einer Instanz des SocialFeedManagers (Zeile 13) erstellt. Der erste Parameter ist die URL des Newsfeeds oder kann auch NULL sein. Im Falle von NULL wird das Posting im Newsfeed des User in seiner MySite erstellt.
Der gesamte Code:
1: var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
2:
3: using (var clientContext = new ClientContext(spContext.SPHostUrl))
4: {
5: string pwd = PASSWORD;
6: string userEmail = USERLOGIN;
7:
8: SecureString str = new SecureString();
9: pwd.ToList().ForEach(c => str.AppendChar(c));
10:
11: clientContext.Credentials = new SharePointOnlineCredentials(userEmail, str);
12:
13: SocialFeedManager socMan = new SocialFeedManager(clientContext);
14: SocialPostCreationData dat = new SocialPostCreationData
15: {
16: ContentText = TextBox1.Text + " " + DateTime.Now.ToShortTimeString()
17: };
18:
19: socMan.CreatePost(spContext.SPHostUrl.ToString(), dat);
20: clientContext.ExecuteQuery();
21:
22: TextBox1.Text = "";
23: }