Follow content in SharePoint 2013

SharePoint 2013

Learn about common programming tasks for following content (documents, sites, and tags) in SharePoint Server 2013.

When users follow documents, sites, or tags, status updates from documents, conversations on sites, and notifications of tag use show up in their newsfeed. The features related to following content can be seen on the Newsfeed and the Following content pages.

SharePoint Server 2013 provides the following APIs that you can use to programmatically follow content:

  • 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, a JavaScript object model, and a 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 tasks for following content.

Note Note

The same APIs are used to follow people. See Follow people in SharePoint 2013 for an overview of Following People tasks.

Table 1 shows the manager and other key objects (or REST resources) in the APIs and the class library (or access point) where you can find them.

Note Note

The Silverlight and mobile client object models are not included 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 following content programmatically

.NET client object model

See: How to: Follow documents and sites by using the .NET client object model in SharePoint 2013

Manager object:
SocialFollowingManager

Primary namespace:
Microsoft.SharePoint.Client.Social

Other key objects:
SocialActor, SocialActorInfo, SocialActorType, SocialActorTypes

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

JavaScript object model

Manager object:
SocialFollowingManager

Primary namespace:
SP.Social

Other key objects:
SocialActor, SocialActorInfo, SocialActorType, SocialActorTypes

Class library:
SP.UserProfiles.js

REST service

See How to: Follow documents, sites, and tags by using the REST service in SharePoint 2013

Manager resource:
social.following

Primary namespace (OData):
sp.social.SocialRestFollowingManager

Other key resources:
SocialActor, SocialActorInfo, SocialActorType, SocialActorTypes

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

Server object model

Manager object:
SPSocialFollowingManager

Primary namespace:
Microsoft.Office.Server.Social

Other key objects:
SPSocialActor, SPSocialActorInfo, SPSocialActorType, SPSocialActorTypes

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

Table 2 shows common programming tasks for following content 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).

Note Note

The same APIs are used to follow people. See Follow people in SharePoint 2013 for an overview of Following People tasks.

Table 2. API for common tasks for following content in SharePoint Server 2013

Task

Members

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

CSOM: SocialFollowingManager

JSOM: SocialFollowingManager

REST: <siteUri>/_api/social.following

SSOM: SPSocialFollowingManager

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

CSOM: not implemented

JSOM: not implemented

REST: not implemented

SSOM: SPSocialFollowingManager (overloaded)

Have the current user start following (stop following) an item

CSOM: Follow (StopFollowing)

JSOM: follow (stopFollowing)

REST: POST <siteUri>/_api/social.following/Follow (<siteUri>/_api/social.following/StopFollowing)
and pass the actor parameter in the request body

SSOM: Follow (StopFollowing)

Find out whether the current user is following a particular item

CSOM: IsFollowed

JSOM: isFollowed

REST: POST <siteUri>/_api/social.following/IsFollowed and pass the actor parameter in the request body

SSOM: IsFollowed

Get the documents, sites, and/or tags that the current user is following

CSOM: GetFollowed

JSOM: getFollowed

REST: GET <siteUri>/_api/social.following/my/Followed(types=2) (documents = 2, sites = 4, tags = 8)

SSOM: GetFollowed

Get the count of documents, sites, and/or tags that the user is following

CSOM: GetFollowedCount

JSOM: getFollowedCount

REST: GET <siteUri>/_api/social.following/my/FollowedCount(types=2) (documents = 2, sites = 4, tags = 8)

SSOM: GetFollowedCount

Get the URI of the site that lists the current user's followed documents

CSOM: FollowedDocumentsUri

JSOM: followedDocumentsUri

REST: GET <siteUri>/_api/social.following/my/FollowedDocumentsUri

SSOM: FollowedDocumentsUri

Get the URI of the site that lists the current user's followed sites

CSOM: FollowedSitesUri

JSOM: followedSitesUri

REST: GET <siteUri>/_api/social.following/my/FollowedSitesUri

SSOM: FollowedSitesUri

Note Note

For examples that show how to use the REST service to follow content, see How to: Follow documents, sites, and tags by using the REST service in SharePoint 2013.

To start and stop following a tag or to find out whether the current user is following it, you need to use the tag's GUID. The following code shows how to get the GUID based on the tag name.

Before you run the code, you need to add a reference to sp.taxonomy.js and change the placeholder tag name with the name of an existing tag.

function getTagGuid() {
    var tagName = '#tally';
    var clientContext = new SP.ClientContext.get_current();
    var label = SP.Taxonomy.LabelMatchInformation.newObject(clientContext);
    label.set_termLabel(tagName);
    label.set_trimUnavailable(false);
    var taxSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(clientContext);
    var termStore = taxSession.getDefaultKeywordsTermStore();
    var termSet = termStore.get_hashTagsTermSet();
    terms = termSet.getTerms(label);
    clientContext.load(terms);
    clientContext.executeQueryAsync(
        function () {
            var tag = terms.get_item(0);
            if (tag !== null) {
                var tagGuid = tag.get_id().toString();
                if (!SP.ScriptUtility.isNullOrEmptyString(tagGuid)) {
                    alert(tagGuid);
                }
            }
        },
        function (sender, args) {
            alert(args.get_message());
        }
    );
}

Show:
© 2014 Microsoft