Export (0) Print
Expand All

Work with social feeds in SharePoint 2013

SharePoint 2013

Learn about common programming tasks for working with social feeds and microblog posts in SharePoint Server 2013.

In SharePoint Server 2013 on-premises farms, interactive social feeds are designed to encourage people to share information and to stay connected with people and content. You can see many of the feed features on the Newsfeed page on a user's personal site. Feeds contain collections of threads that represent microblog posts, conversations, status updates, and other notifications.

SharePoint Server 2013 provides the following APIs that you can use to programmatically work with social feeds:

  • Client object models for managed code

    • .NET client object model

    • Silverlight client object model

    • Mobile client object model

  • JavaScript object model

  • Representational State Transfer (REST) service

  • Server object model

As a best practice in SharePoint 2013 development, use client APIs when you can. Client APIs include the client object models, the JavaScript object model, and the REST service. For more information about the APIs in SharePoint 2013 and when to use them, see Choose the right API set in SharePoint 2013.

Each API includes a manager object that you use to perform core feed-related tasks. Table 1 shows the manager and other key objects (or REST resources) in the APIs and the class library (or endpoint URI) where you can find them.

Note Note

The Silverlight and mobile client object models are not explicitly mentioned in Table 1 or Table 2 because they provide the same core functionality as the .NET client object model and use the same signatures. The Silverlight client object model is defined in Microsoft.SharePoint.Client.UserProfiles.Silverlight.dll, and the mobile client object model is defined in Microsoft.SharePoint.Client.UserProfiles.Phone.dll.

Table 1. SharePoint 2013 APIs used for working with social feeds programmatically

.NET client object model

See: How to: Create and delete posts and retrieve the social feed by using the .NET client object model in SharePoint 2013

Manager object:
SocialFeedManager

Primary namespace:
Microsoft.SharePoint.Client.Social

Other key objects:
SocialFeed, SocialThread, SocialPost, SocialPostCreationData, SocialFeedOptions, SocialActor

Class library:
Microsoft.SharePoint.Client.UserProfiles.dll

JavaScript object model

See How to: Create and delete posts and retrieve the social feed by using the JavaScript object model in SharePoint 2013

Manager object:
SocialFeedManager

Primary namespace:
SP.Social

Other key objects:
SocialFeed, SocialThread, SocialPost, SocialPostCreationData, SocialFeedOptions, SocialActor

Class library:
SP.UserProfiles.js

REST service

See How to: Learn to read and write to the social feed by using the REST service in SharePoint 2013

Manager resource:
social.feed (SocialRestFeedManager)

Primary namespace (OData):
SP.Social

Other key resources:
SocialFeed, SocialRestFeed, SocialThread, SocialRestThread, SocialPost, SocialPostCreationData, SocialRestPostCreationData, SocialFeedOptions, SocialActor, SociaRestActor

Access point:
<siteUri>/_api/social.feed

Server object model

Note Note

Code that uses the server object model to access feed data and runs remotely must use an SPServiceContextScope object.

Manager object:
SPSocialFeedManager

Primary namespace:
Microsoft.Office.Server.Social

Other key objects:
SPSocialFeed, SPSocialThread, SPSocialPost, SPSocialFeedOptions, SPSocialActor

Class library:
Microsoft.Office.Server.UserProfiles.dll

If you're using the server object model to access feed content and your code isn't running in a SharePoint instance (in other words, if your extension is not installed in the LAYOUTS folder on the application server), use an SPServiceContextScope object in your code. The following code example shows one way to incorporate the SPServiceContextScope object into your code.

using (SPSite site = new SPSite(<siteURL>))
{
    using (new Microsoft.SharePoint.SPServiceContextScope(SPServiceContext.GetContext(site)))
    {
        // code
    }
}

Table 2 shows common programming tasks for working with social feeds and the members that you use to perform them. Members are from the .NET client object model (CSOM), JavaScript object model (JSOM), REST service, and server object model (SSOM).

Table 2. API for common programming tasks for working with social feeds in SharePoint Server 2013

Task

Members

Create an instance of the manager object in the context of the current user

CSOM: SocialFeedManager

JSOM: SocialFeedManager

REST: GET <siteUri>/_api/social.feed

SSOM: SPSocialFeedManager

Create an instance of the manager object in the context of a particular user

CSOM: not implemented

JSOM: not implemented

REST: not implemented

SSOM: SPSocialFeedManager

Get the user for the current context

CSOM: Owner

JSOM: owner

REST: GET <siteUri>/_api/social.feed/my

SSOM: Owner

Get the feed for the current user

(specify the feed type)

CSOM: GetFeed

JSOM: getFeed

REST: GET <siteUri>/_api/social.feed/my/Feed (personal feed), <siteUri>/_api/social.feed/my/News, <siteUri>/_api/social.feed/my/TimelineFeed, or <siteUri>/_api/social.feed/my/Likes

SSOM: GetFeed

Get the personal feed for a particular user

CSOM: GetFeedFor

JSOM: getFeedFor

REST: GET <siteUri>/_api/social.feed/actor(item='domain\\user')/Feed

SSOM: GetFeedFor

Get the site feed for a team site

(specify the URL of the site feed as the actor (example: http://<siteCollection>/<teamSite>/newsfeed.aspx))

CSOM: GetFeedFor

JSOM: getFeedFor

REST: GET <siteUri>/_api/social.feed/actor(item=@v)/Feed?@v='http://<siteCollection>/<teamSite>/newsfeed.aspx'

SSOM: GetFeedFor

Publish a root post to the current user's feed

(specify null for the target)

CSOM: CreatePost

JSOM: createPost

REST: POST <siteUri>/_api/social.feed/my/Feed/Post and pass the restCreationData parameter in the request body

SSOM: CreatePost

Publish a post to a site feed

(specify the URL of the site feed as the target (example: http://<siteCollection>/teamSite>/newsfeed.aspx))

CSOM: CreatePost

JSOM: createPost

REST: POST <siteUri>/_api/social.feed/actor(item=@av)/feed/post/?@av='<teamSiteUri>/newsfeed.aspx' and pass the restCreationData parameter in the request body (specify null for the ID parameter)

SSOM: CreatePost

Publish a reply to a post

(specify the ID of the target thread)

CSOM: CreatePost

JSOM: createPost

REST: POST <siteUri>/_api/social.feed/Post/Reply and pass the restCreationData parameter in the request body

SSOM: CreatePost

Delete a post, reply, or thread in the current user's feed (deleting a root post deletes the whole thread)

CSOM: DeletePost

JSOM: deletePost

REST: POST <siteUri>/_api/social.feed/Post/Delete and pass the ID parameter in the request body

SSOM: DeletePost

Get a thread (a root post and all its replies) from the user's feed

CSOM: GetFullThread

JSOM: getFullThread

REST: POST <siteUri>/_api/social.feed/Post and pass the ID parameter in the request body

SSOM: GetFullThread

Have the user like (unlike) a post or reply

CSOM: LikePost (UnlikePost)

JSOM: likePost (unlikePost)

REST: POST <siteUri>/_api/social.feed/Post/Like (<siteUri>/_api/social.feed/Post/Unlike) and pass the ID parameter in the request body

SSOM: LikePost (UnlikePost)

Get all likers for a post

CSOM: GetAllLikers

JSOM: getAllLikers

REST: POST <siteUri>/_api/social.feed/Post/Likers and pass the ID parameter in the request body

SSOM: GetAllLikers

Get the posts that mention a user

CSOM: GetMentions

JSOM: getMentions

REST: GET <siteUri>/_api/social.feed/my/MentionFeed

SSOM: GetMentions

Get the number of unread mentions for the current user

CSOM: GetUnreadMentionCount

JSOM: getUnreadMentionCount

REST: GET <siteUri>/_api/social.feed/my/UnreadMentionCount

SSOM: GetUnreadMentionCount

Lock (unlock) a thread in the current user's feed

CSOM: LockThread (UnlockThread)

JSOM: lockThread (unlockThread)

REST: POST <siteUri>/_api/social.feed/Post/Lock (<siteUri>/_api/social.feed/Post/Unlock) and pass the ID parameter in the request body

SSOM: LockThread (UnlockThread)

Note Note

The domain\\user placeholder value in the REST example should be replaced with the account name of an actual user. To see how to pass a REST parameter in a request body, see the examples in the Social feed REST API reference.

SharePoint Server 2013 does not provide an API to customize the layout or rendering of microblog posts directly. SharePoint Server 2013 only provides the data and allows cross-platform and cross-device client applications to define layouts that are appropriate for their form factors and needs. In SharePoint 2013 development, you can use JavaScript overrides in client-side rendering, as described in How to: Customize a list view in apps for SharePoint using client-side rendering.

Feed types represent slices of feed data. When you retrieve a feed for the current user, you can specify one of the following feed types:

  • Personal contains the posts and updates that are generated from a user. On My Site, this feed is shown on a user's About me page.

  • News contains the posts and updates that are generated from the current user and from the people and the content that the user is following. When you retrieve the News feed type, use the ByModifiedTime sort order option to get the most recent (cached) activities from the people who the user is following. On My Site, this feed is shown on a user's Newsfeed page.

  • Timeline contains the posts and updates that are generated from the current user and from the people and the content that the user is following. Timeline is particularly useful when you want feed data from a specific time range or when you want to sort with the ByCreatedTime option (which includes the largest sampling of people).

  • Likes contains reference threads with a PostReference property that represents a post that the current user has flagged with the Like attribute.

  • Everyone contains the threads from the current user's whole organization.

The server, client, and JavaScript object models provide the GetFeed method that you can use to retrieve any feed type for the current user and the GetFeedFor method that you can use to retrieve the Personal feed type (only) for a specified user. Both methods take a SocialFeedOptions object as a parameter, which you use to specify the time-based sort order, date range, and maximum number of threads to return.

Note Note

The REST service provides separate resources to retrieve each feed type, as shown in Table 2.

If a thread contains more than two replies, the server returns a digest of the thread that contains only the two most recent replies. (Thread digests have the IsDigest thread attribute applied.) If you want to get all the replies in a thread, call the GetFullThread method from the feed manager object and pass in the thread identifier.

Show:
© 2014 Microsoft