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

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

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

SharePoint では、ユーザーが別のユーザーをフォローすると、フォローされたユーザーの投稿とアクティビティがフォローしたユーザーのニュースフィードに表示されます。In SharePoint, when a user follows people, the posts and activities of the followed people 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. .NET クライアント オブジェクト モデルでは、フォローするユーザーが SocialActor オブジェクトで表されます。In the .NET client object model, people that you follow are represented by SocialActor objects. .NET クライアント オブジェクト モデルでユーザー フォローのコア タスクを実行する場合は、SocialFollowingManager オブジェクトを使用します。To perform core Following People tasks in the .NET client object model, you use the SocialFollowingManager object. この記事では、ユーザー フォロー機能を操作する際の .NET クライアント オブジェクト モデルの使用方法について説明します。This article shows how to use the .NET client object model to work with Following People features.

注意

SocialFollowingManager はユーザーおよびコンテンツをフォローする際のコア機能を統合しているため、これを中心に説明します。Note: We focus on SocialFollowingManager because it consolidates the core functionality for following people and content. ただし、PeopleManager オブジェクトには、AmIFollowedBy(String) メソッドや他のユーザーのフォロー状態を取得するメソッドなど、ユーザーをフォローするための追加機能が含まれています。However, the PeopleManager object contains additional functionality for following people, such as the AmIFollowedBy(String) method and methods that obtain the following status of other users.

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

.NET クライアント オブジェクト モデルを使用してユーザー フォロー機能を操作するコンソール アプリケーションを作成するには、次のものが必要です。To create a console application that uses the .NET client object model to work with Following People features, you'll need the following:

  • 個人用サイトが構成されていて、現在のユーザーおよび対象ユーザーのユーザー プロファイルと個人用サイトが作成されている 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

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

注意

SharePoint を実行するコンピューター上で開発しない場合は、SharePoint クライアント アセンブリが含まれている SharePoint クライアント コンポーネントをダウンロードしてください。Note: If you're not developing on the computer that is running SharePoint, get the SharePoint Client Components download that contains SharePoint client assemblies.

Visual Studio 2012 でのコンソール アプリケーションの作成Create a console application in Visual Studio 2012

  1. Visual Studio を開き、[ ファイル]、[ 新規作成]、[ プロジェクト] の順に選択します。Open Visual Studio, 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. [ テンプレート] ボックスの一覧で、[ Windows] を選択し、[ コンソール アプリケーション] テンプレートを選択します。In the Templates list, choose Windows, and then choose the Console Application template.

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

  5. 次のアセンブリへの参照を追加します。Add references to the following assemblies:

    • Microsoft.SharePoint.ClientMicrosoft.SharePoint.Client
    • Microsoft.SharePoint.ClientRuntimeMicrosoft.SharePoint.ClientRuntime
    • Microsoft.SharePoint.Client.UserProfilesMicrosoft.SharePoint.Client.UserProfiles
  6. Program クラスの内容を次のどちらかのシナリオのコード例に置き換えます。Replace the contents of the Program class with the code example from one of the following scenarios:

  7. コンソール アプリケーションをテストするには、メニュー バーの [ デバッグ] を選択し、[ デバッグ開始] をクリックします。To test the console application, on the menu bar, choose Debug, Start Debugging.

コード例: SharePoint .NET クライアント オブジェクト モデルを使用してユーザーのフォローを開始または停止するCode example: Start or stop following people by using the SharePoint .NET client 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.

このコード例では、 Follow メソッドによって返される SocialFollowResult オブジェクトを使用して、対象ユーザーのフォローを開始するか停止するかを決定します。This code example uses the SocialFollowResult object that is returned by the Follow method to determine whether to start or stop following the target user.

注意

コードを実行する前に、変数 serverUrltargetUser のプレースホルダーの値を変更してください。Change the placeholder values for the serverUrl and targetUser variables before you run the code.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace FollowPeopleCSOM
{
    class Program
    {
        static ClientContext clientContext;
        static SocialFollowingManager followingManager;
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target
            // server URL and target user.
            const string serverUrl = "http://serverName";
            const string targetUser = "domainName\\\\userName";

            // Get the client context.
            clientContext = new ClientContext(serverUrl);

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

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

            // Find out whether the current user is following the target user.
            ClientResult<bool> isFollowed = followingManager.IsFollowed(actorInfo);

            // Get the information from the server.
            clientContext.ExecuteQuery();

            Console.WriteLine("Was the current user following the target user? {0}\\n", isFollowed.Value);
            Console.Write("Initial count: ");

            // Get the current count of followed people.
            WriteFollowedCount();

            // Try to follow the target user. If the result is OK, then
            // the request succeeded.
            ClientResult<SocialFollowResult> result = followingManager.Follow(actorInfo);
            clientContext.ExecuteQuery();

            // If the result is AlreadyFollowing, then stop following 
            // the target user.
            if (result.Value == SocialFollowResult.AlreadyFollowing)
            {
                followingManager.StopFollowing(actorInfo);
                clientContext.ExecuteQuery();
            }

            // Handle other SocialFollowResult return values.
            else if (result.Value == SocialFollowResult.LimitReached
                || result.Value == SocialFollowResult.InternalError)
            {
                Console.WriteLine(result.Value);
            }

            // Get the updated count of followed people.
            Console.Write("Updated count: ");
            WriteFollowedCount();
            Console.ReadKey();
        }

        // Get the count of the people who the current user is following.
        static void WriteFollowedCount()
        {
            ClientResult<int> followedCount = followingManager.GetFollowedCount(SocialActorTypes.Users);
            clientContext.ExecuteQuery();
            Console.WriteLine("The current user is following {0} people.", followedCount.Value);
        }
    }
}

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

次のコード例では、現在のユーザーがフォローしているユーザーを取得し、現在のユーザーによってフォローされているユーザーを取得して、現在のユーザーのユーザー フォロー状態に関する情報を取得します。The following code example gets the people who the current user is following, gets the people who are followed by the current user, and gets information about the current user's Following People status. 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.

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

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

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

注意

コードを実行する前に、変数 serverUrltargetUser のプレースホルダーの値を変更してください。Change the placeholder values for the serverUrl and targetUser variables before you run the code.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace FollowPeopleCSOM
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target
            // server URL and target user.
            const string serverUrl = "http://serverName";
            const string targetUser = "domainName\\\\userName";

            // Get the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

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

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

            // Find out whether the current user is following the target user.
            ClientResult<bool> isFollowed = followingManager.IsFollowed(actorInfo);

            // Get the count of people who the current user is following.
            ClientResult<int> followedCount = followingManager.GetFollowedCount(SocialActorTypes.Users);

            // Get the people who the current user is following.
            ClientResult<SocialActor[]> followedResult = followingManager.GetFollowed(SocialActorTypes.Users);

            // Get the people who are following the current user.
            ClientResult<SocialActor[]> followersResult = followingManager.GetFollowers();

            // Get the information from the server.
            clientContext.ExecuteQuery();

            // Write the results to the console window.
            Console.WriteLine("Is the current user following the target user? {0}\\n", isFollowed.Value);
            Console.WriteLine("People who the current user is following: ({0} count)", followedCount.Value);
            IterateThroughPeople(followedResult.Value);
            Console.WriteLine("\\nPeople who are following the current user:");
            IterateThroughPeople(followersResult.Value);
            Console.ReadKey();
        }

        // Iterate through the people and get each person's display
        // name, personal URI, and picture URI.
        static void IterateThroughPeople(SocialActor[] actors)
        {
            foreach (SocialActor actor in actors)
            {
                Console.WriteLine("  - {0}", actor.Name);
                Console.WriteLine("\\tPersonal URI: {0}", actor.PersonalSiteUri);
                Console.WriteLine("\\tPicture URI: {0}", actor.ImageUri);
            }
        }
    }
}

関連項目See also