SharePoint で JavaScript オブジェクト モデルを使用してユーザーをフォローするHow to: Follow people by using the JavaScript object model in SharePoint

SharePoint JavaScript オブジェクト モデルを使用して、ユーザー フォロー機能を操作する方法を説明します。Learn how to work with Following People features by using the SharePoint JavaScript object model.

SharePoint のユーザー フォロー機能を使用する理由Why use Following People features in SharePoint?

SharePoint では、ユーザー フォロー機能により、ユーザーが相互のつながりを維持できるように支援します。In SharePoint, Following People features help users to stay connected with each other. たとえば、ユーザーが別のユーザーをフォローすると、フォローされたユーザーの投稿やアクティビティは、フォローしたユーザーのニュースフィードに表示されます。For example, when a user follows someone, that person's posts and activities show up in the user's newsfeed. ユーザーが気に掛けている別のユーザーに焦点を合わせるユーザー フォロー機能を使用すると、アプリやソリューションの社会性が向上します。By using Following People features to focus on the people who users care about, you can improve the relevance of your app or solution. JavaScript オブジェクト モデルでは、フォローするユーザーが SocialActor オブジェクトで表されます。In the JavaScript object model, people that you follow are represented by SocialActor objects. JavaScript オブジェクト モデルでユーザー フォローのコア タスクを実行する場合は、SocialFollowingManager オブジェクトを使用します。To perform core Following People tasks in the JavaScript object model, you use the SocialFollowingManager object. この記事では、ユーザー フォロー機能を操作する際の JavaScript オブジェクト モデルの使用方法について説明します。This article shows how to use the JavaScript object model to work with Following People features.

注意

SocialFollowingManager は、ユーザーとコンテンツをフォローする場合に使用することが推奨されている API です。Note:SocialFollowingManager is the recommended API to use for following people and content. ただし、PeopleManager オブジェクトには、amIFollowedBy メソッドや他のユーザーのフォロー状態を取得するメソッドなど、ユーザーをフォローするための追加機能が含まれています。However, the PeopleManager object contains additional functionality for following people, such as the amIFollowedBy method and methods that obtain the following status of other users.

SharePoint JavaScript オブジェクト モデルを使用してユーザー フォロー機能を操作するための開発環境を設定する際の前提条件Prerequisites for setting up your development environment to work with Following People features by using the SharePoint JavaScript object model

ユーザー フォロー機能の操作に JavaScript オブジェクト モデルを使用するファーム ソリューションを作成するには、次に示す項目が必要になります。To create the farm solution that uses the JavaScript object model to work with Following People features, you'll need:

  • 個人用サイトが構成されていて、現在のユーザーおよび対象ユーザーのユーザー プロファイルと個人用サイトが作成されている SharePointSharePoint with My Site configured, and with user profiles and personal sites created for the current user and a target user

  • Visual Studio 2012Visual Studio 2012

  • Office Developer Tools for Visual Studio 2012Office Developer Tools for Visual Studio 2012

  • ログオン ユーザー用に、User Profile Service アプリケーションの [ フル コントロール] アクセス許可Full Control access permissions to the User Profile service application for the logged-on user

  • ログオン ユーザー用のローカル管理アクセス許可Local administrator permissions for the logged-on user

Visual Studio 2012 でファーム ソリューションおよびアプリケーション ページを作成するCreate a farm solution and application page in Visual Studio 2012

  1. Visual Studio を管理者として実行し、[ ファイル]、[ 新規作成]、[ プロジェクト] の順に選択します。Run Visual Studio as administrator, and choose File, New, Project.

  2. [ 新しいプロジェクト] ダイアログ ボックスの上部にあるドロップダウン リストから [ .NET Framework 4.5] を選択します。In the New Project dialog box, choose .NET Framework 4.5 from the drop-down list at the top of the dialog box.

  3. [ テンプレート] リストの [ Office/SharePoint] を展開し、[ SharePoint ソリューション] を選択して、[ SharePoint - 空のプロジェクト] テンプレートを選択します。In the Templates list, expand Office/SharePoint, choose SharePoint Solutions, and then choose the SharePoint - Empty Project template.

  4. プロジェクトの名前を FollowPeopleJSOM にして、[ OK] ボタンをクリックします。Name the project FollowPeopleJSOM, and then choose the OK button.

  5. [ SharePoint カスタマイズ ウィザード] ダイアログ ボックスで、[ ファーム ソリューションとして配置する] を選択して、[ 完了] をクリックします。In the SharePoint Customization Wizard dialog box, choose Deploy as a farm solution, and then choose the Finish button.

  6. [ ソリューション エクスプローラー] で、[ FollowPeopleJSOM] プロジェクトのショートカット メニューを開き、SharePoint のマップされた "Layouts" フォルダーを追加します。In Solution Explorer, open the shortcut menu for the FollowPeopleJSOM project, and then add a SharePoint "Layouts" mapped folder.

  7. レイアウト フォルダーで、FollowPeopleJSOM フォルダーのショートカット メニューを開いて、FollowPeople.aspx という名前の新しい SharePoint アプリケーション ページを追加します。In the Layouts folder, open the shortcut menu for the FollowPeopleJSOM folder, and then add a new SharePoint application page namedFollowPeople.aspx.

    注意

    この記事のコード例では、ページ マークアップにカスタム コードを定義していますが、Visual Studio によって作成されるページの分離コードは使用しません。Note: The code examples in this article define custom code in the page markup but do not use the code-behind class that Visual Studio creates for the page.

  8. FollowPeople.aspx ページのショートカット メニューを開いて、[スタートアップ アイテムとして設定] を選択します。Open the shortcut menu for the FollowPeople.aspx page, and then choose Set as Startup Item.

  9. FollowPeople.aspx ファイルのマークアップで、次に示すコードを "Main" の asp:Content タグの間に貼り付けます。このコードでは、コントロールとスクリプト参照を定義します。In the markup of the FollowPeople.aspx file, paste the following code between the "Main" asp:Content tags. This code defines controls and script references.

<span id="followResults"></span><br/><br />
<button id="sendRequest" type="button"></button><br/>
<span id="message" style="color: #FF0000;"></span>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js" type="text/javascript"></script>
<SharePoint:ScriptLink name="SP.js" runat="server" ondemand="false" localizable="false" loadafterui="true" />
<SharePoint:ScriptLink name="SP.UserProfiles.js" runat="server" ondemand="false" localizable="false" loadafterui="true" />
<SharePoint:FormDigest id="FormDigest" runat="server"/>
<script type="text/javascript">
    // Replace this comment with the code for your scenario. 
</script>
> [!NOTE]
> The "Get followers and followed people" example doesn't use the button control or the form digest control, which is only required for operations that update server content. A form digest generates a message digest used for security validation. 
  1. script タグの間のコメントは、次に示すいずれかのシナリオのコード例に置き換えます。Replace the comment between the script tags with the code example from one of the following scenarios:

  2. ソリューションをテストするには、[ デバッグ] メニューの [ デバッグ開始] をクリックします。To test the solution, on the menu bar, choose Debug, Start Debugging.

コード例: SharePoint JavaScript オブジェクト モデルを使用してユーザーのフォローを開始または停止するCode example: Start or stop following people by using the SharePoint JavaScript object model

次のコード例では、現在のユーザーに対象ユーザーのフォローを開始または停止させます。このコード例では、以下の方法を示しています。The following code example makes the current user start following or stop following a target user. It shows how to:

  • isFollowed メソッドを使用して、現在のユーザーが対象ユーザーをフォローしているかどうかを確認します。Check whether the current user is following a target user by using the isFollowed method.

  • getFollowedCount メソッドを使用して、現在のユーザーがフォローしている人数を取得します。Get the count of people who the current user is following by using the getFollowedCount method.

  • follow メソッドを使用して、対象ユーザーのフォローを開始します。Start following the target user by using the follow method.

  • stopFollowing メソッドを使用して、対象ユーザーのフォローを停止します。Stop following the target user by using the stopFollowing method.

注意

ファーム ソリューションおよびアプリケーション ページを作成する」の手順で追加した script タグの間に以下のコードを貼り付けます。Paste the following code between the script tags that you added in the Create a farm solution and application page procedure. その後で、targetUser 変数のプレースホルダーの値を変更してからコードを実行します。Then, change the placeholder value for the targetUser variable before you run the code.


// Replace the placeholder value with the account name of the target user.
var targetUser = 'domain\\userName';

var clientContext;
var followingManager;
var actorInfo;
var isFollowed;
var followedCount;

// Ensure that the SP.UserProfiles.js file is loaded before running your code.
$(document).ready(function () {
    SP.SOD.executeOrDelayUntilScriptLoaded(getFollowingStatus, 'SP.UserProfiles.js');
});

// Get the Following status of the current user.
function getFollowingStatus() {

    // Get the current client context.
    clientContext = SP.ClientContext.get_current();

    // Get the SocialFeedManager instance.
    followingManager = new SP.Social.SocialFollowingManager(clientContext);

    // Create a SocialActorInfo object to represent the target user.
    actorInfo = new SP.Social.SocialActorInfo();
    actorInfo.set_accountName(targetUser);

    // Find out whether the current user is following the target user.
    isFollowed = followingManager.isFollowed(actorInfo);
    followedCount = followingManager.getFollowedCount(1);

    // Get the information from the server.
    clientContext.executeQueryAsync(showFollowingStatus, requestFailed)
}

// Show the Following status of the current user.
function showFollowingStatus() {
    var results = '';
    results += 'Is the current user following the target user? ' + isFollowed.get_value();
    results += '<br/>Total count of followed people: ' + followedCount.get_value();
    $('#followResults').html(results);

    // Initialize the button for this example.
    $('#sendRequest').click(
        function () {
            $('#message').empty();
            toggleFollowingStatus();
        });
    $('#sendRequest').text('Toggle following status');
}

// Follow or stop following the target user.
function toggleFollowingStatus() {
    if (isFollowed.get_value() === false) {
        followingManager.follow(actorInfo);
    }
    else if (isFollowed.get_value() === true) {
        followingManager.stopFollowing(actorInfo);
    }
    clientContext.executeQueryAsync(getFollowingStatus, requestFailed);
}

// Failure callback.
function requestFailed(sender, args) {
    $('#message').html('Error: ' + args.get_message());
}

コード例: SharePoint JavaScript オブジェクト モデルを使用してフォロワーとフォロー対象ユーザーを取得するCode example: Get followers and followed people by using the SharePoint JavaScript object model

次のコード例では、現在のユーザーがフォローしているユーザーを取得し、現在のユーザーによるフォロー対象のユーザーを取得します。 以下にその方法を説明します。The following code example gets the people who the current user is following and gets the people who are followed by the current user. It shows how to:

  • getFollowed メソッドを使用して、現在のユーザーがフォローしているユーザーを取得します。Get the people who the current user is following by using the getFollowed method.

  • getFollowers メソッドを使用し、 User アクター タイプを表す 1 を渡して、現在のユーザーをフォローしているユーザーを取得します。Get the people who are following the current user by using the getFollowers method and passing 1 to represent User actor types.

  • ユーザーのグループを反復処理して、それぞれのユーザーの表示名、個人用サイトの URL、および画像の URL を取得します。Iterate through the groups of people and get each person's display name, personal site URI, and picture URI.

注意

ファーム ソリューションおよびアプリケーション ページを作成する」の手順で追加した script タグの間に以下のコードを貼り付けます。Paste the following code between the script tags that you added in the Create a farm solution and application page procedure.


var followed;
var followers;

// Ensure that the SP.UserProfiles.js file is loaded before running your code.
$(document).ready(function () {
    SP.SOD.executeOrDelayUntilScriptLoaded(getFollowedAndFollowers, 'SP.UserProfiles.js');

    // Hide the button for this example.
    $('#sendRequest').hide();
});

// Get the Following status of the current user.
function getFollowedAndFollowers() {

    // Get the current client context.
    var clientContext = SP.ClientContext.get_current();

    // Get the SocialFeedManager instance.
    var followingManager = new SP.Social.SocialFollowingManager(clientContext);

    // Get followed people and followers.
    followers = followingManager.getFollowers();
    followed = followingManager.getFollowed(1);

    // Send the request to the server.
    clientContext.executeQueryAsync(showFollowedAndFollowers, requestFailed)
}

// Show the Following status of the current user.
function showFollowedAndFollowers() {
    var results = 'The current user is following ' + followed.length + ' people: <br/>';

    for (var i = 0; i < followed.length; i++) {
        var user = followed[i];
        var name = user.get_name();
        var personalSiteUri = user.get_personalSiteUri();
        var pictureUri = user.get_imageUri();

        results += '<br/>' + name + '<br/>' + personalSiteUri + '<br/>' + pictureUri + '<br/>';
    }

    results += '<br/>The current user is followed by ' + followers.length + ' people: <br/>';

    for (var i = 0; i < followers.length; i++) {
        var user = followers[i];
        var name = user.get_name();
        var personalSiteUri = user.get_personalSiteUri();
        var pictureUri = user.get_imageUri();

        results += '<br/>' + name + '<br/>' + personalSiteUri + '<br/>' + pictureUri + '<br/>';
    }
    $('#followResults').html(results);
}

// Failure callback.
function requestFailed(sender, args) {
    $('#message').html('Error: ' + args.get_message());
}

関連項目See also