OpenGraphについて
「ノード」「エッジ」と「フィード」で構成されている
nodes (such asa User, a Photo,
a Page, a Comment),
edges (such as a Page's Photos,
or a Photo's Comments),
fields (such as the birthday of a User,
or the name of a Page).
Quickstart for Graph API
https://developers.facebook.com/docs/graph-api/quickstart/
アクセストークン
FacebookClientにプロパティとしてAccessTokenがある
namespace Facebook
{
// Providesaccess to the Facbook Platform.
public class FacebookClient
{
public FacebookClient();
public FacebookClient(string accessToken);
// Gets or sets the access token.
public virtual string AccessToken { get; set; }
// Gets or sets the app id.
public virtual string AppId { get; set; }
// Gets or sets the app secret.
public virtual string AppSecret { get; set; }
public virtual Func<object, string> SerializeJson { get; set; }
バッチ処理
複数のGETリクエストを1回の接続で行う
var result =client.Batch(
new FacebookBatchParameter("me"),
new FacebookBatchParameter("me/feed“)
);
http://facebooksdk.net/docs/making-synchronous-requests/#4
※最大50リクエスト
FQLの例
サブクエリの記述可能
名前から情報取得する
SELECT uid,name,sex,pic,username FROMuser WHERE username ="taro“
友達の画像を取得する
SELECT pic FROM user WHERE uid=‘xxxxxxxxxxxx‘
「いいね」を押したURLを取得
SELECT url FROM object_url WHERE url <>“” AND id IN
(SELECT object_id FROM like WHERE user_id=me())
SELETE に*は使えない WHEREは必須(1=1などはエラーとなる)
39.
FQL
複数リクエスト
(PHP) $results =$facebook->api(array(
'method' => 'fql.multiquery',
'queries' => array(
'query1' => 'SELECT …',
'query2' => 'SELECT ...',
),
)); http://facebooksdk.net/docs/making-synchronous-requests/#3
var result = client.Get("fql", new{
q = new[]{
"SELECT uid from user where uid=me()",
"SELECT name FROM user WHERE uid=me()"
}
});
いいねベスト100
Batch処理
var list =new List<FacebookBatchParameter>();
foreach (var d in data){
list.Add(new FacebookBatchParameter(d.object_id));
}
var result = client.Batch(list.GetRange((n*50),50).ToArray());
当社比
1件ごとリクエストした場合 78秒/50件
Batchでリクエストした場合 2.3秒/50件
SQL処理にボトルネックが無いことは明白
※1度に50件までしかBatchのパラメータに送れない