LoginSignup
1
3

More than 5 years have passed since last update.

Facebook SDK for .NETで、アプリのアクセストークンを取得する方法

Last updated at Posted at 2016-06-30

概要

Facebook Graphにアクセスするようなアプリのユニットテストしようと思ったときに、アプリのテスト専用ユーザーのユーザーアクセストークンをユニットテストの中で参照したいと言うことがあると思います。
(例えば、テストユーザーとしていいねしたり投稿したりするなど)。

C#のFacebook SDKを使って簡単に実装できたので紹介します。

実際のコード

コードのステップとしては、次のようになっています。

  1. まずは、Facebookアプリのアクセストークンを取得
  2. アプリのアクセストークンを元に、アプリに属しているテストユーザーのアクセストークン等を含むデータを読み出し
  3. 2で取得したテストユーザーのユーザーアクセストークンを使って、投稿したりいいねしたりするなど、ユニットテストで必要な動作を行う

// まずはアプリアクセストークンを取得する
var fb = new FacebookClient();
dynamic result = fb.Get("oauth/access_token", new
{
    client_id = appId, //FacebookアプリのID
    client_secret = appSecret, //FacebookアプリのSecret
    grant_type = "client_credentials"
});

//取得したアプリアクセストークンを使うようにFacebookClientに設定
fb.AccessToken = result.access_token;


//次にアプリに属すテストユーザーのデータを読み出す
dynamic testUsers = fb.Get($"/{appId}/accounts/test-users");


//最後に、テストユーザーのID(例えば"123455555")を元に、ユーザーアクセストークンを取り出す
var userToken = ((IEnumerable<dynamic>)testUsers.data).FirstOrDefault(_ => _.id == "123455555").access_token;


// 後は、ユーザーアクセストークンを元に投稿するなどする
fb.AccessToken = userToken;
fb.Post("/me/feed", new { message = "hello from unit test" });

備考

上の例ではdynamic型でSDKの戻り値を受けていますが、Facebook SDK for .NETの戻り値で型付けを利用する を参考に、戻り値を型付けした状態で使うのもありです。

参考情報

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3