1

Graph API を使用して FQL クエリを実行し、Insights カウンターの値を取得しようとしましたが、成功しませんでした。

誰も私がこれを行う方法を知っていますか?

「Facebook C# SDK」バージョン 5.4.1、C# 4.0 を使用しています。

ドキュメントで提供されている C# サンプル コードを使用する場合

    var fb = new FacebookClient(m_accessToken);
    dynamic result = fb.Query("SELECT name, uid FROM user WHERE uid= me()");

良い反応が返ってきます

{"name":"","uid":100002632407830}

同じ構文で、「pages_fans」Insights カウンターをリクエストし、ライブラリ 5.4.1を使用すると、

var fb = new FacebookClient(m_accessToken);
  dynamic result = fb.Query("SELECT metric, value FROM insights WHERE object_id=6176018219 AND metric='page_fans' AND end_time=end_time_date('2011-12-31') AND period=period('lifetime')");

私はいつも空の応答を受け取ります

 {[]}

同じコードでライブラリ 5.2.1 を使用すると、常に良好な応答が得られます

 {[{"metric":"page_fans","value":"125535"}]}

ここで説明されているのと同じ問題です:ライブラリ 5.4.1 を使用した FQL クエリのエラーですが、別の構文です。

現在、REST API (libary 5.2.1 を使用) を使用して FQL Insights クエリを使用していますが、REST API は非推奨であるため、Graph API (ライブラリ 5.4.1 を使用) を使用する FQL Insights クエリに移行したいと考えています。

バグはどこにありますか:

  1. 私の構文要求で?
  2. 「Facebook C# SDK」ライブラリで?
  3. Facebookサーバー上?

よろしくお願いします。

4

4 に答える 4

2

Facebook GraphAPIExplorerでリクエストしました

https://graph.facebook.com/fql?q=SELECT metric, value FROM insights
WHERE object_id=6176018219 AND metric='page_fans' AND
end_time=end_time_date('2011-12-31') AND period=period('lifetime')

私はいつも空の応答を受け取ります。

{
  "data": [
  ]
}

Facebookのバグです。

Facebookでバグが作成されました:http ://developers.facebook.com/bugs/232510993491615?browse = search_4f08c675cce9d2265724293

于 2012-01-09T15:39:44.883 に答える
1

アクセス トークンを取得するときは、適切なアクセス許可があることを確認してください。

<fb:login-button perms="read_insights"></fb:login-button>
于 2012-10-23T15:54:01.367 に答える
1

確実に機能する情報を取得する別の方法を見つけました

信頼できると思われる洞察を取得する別の方法を見つけました。ドキュメントはhttp://developers.facebook.com/docs/reference/api/insights/にあります。

フォーマットと期間の変更を許可するオプションがさらにあります - 以下の例。

https://graph.facebook.com/2439131959/insights/application_active_users/[期間]?format=json&since=[タイムスタンプ]&until=[タイムスタンプ]&access_token=[アクセストークン]

期間は、日、月、週、生涯です。タイムスタンプは、有効な PST 午前 0 時のみである必要があります。access_token = 可能性があります。1. パーミッションを必要としないメトリクスには何もありません。2. app_id|secret_code または 3. アプリケーションまたはページ (つまり、所有者またはインサイト ユーザー) のインサイト データへのアクセス権を付与された認証トークン。

C# SDK の例:

FacebookClient fbClient = new FacebookClient([appID], [secret]);

        DateTime untilDate= (new DateTime([Now].Year, [Now].Month, [Now].Day));
        DateTime sinceDate= (new DateTime([Now].Year, [Now].Month, [Now].Day)).AddDays(-1);
        TimeSpan t = (untilDate- new DateTime(1970, 1, 1));
        int timestampUntil = (int)t.TotalSeconds;
        t = (sinceDate- new DateTime(1970, 1, 1));
        int timeStampSince = (int)t.TotalSeconds;



        var result = (IDictionary<string, object>)fbClient.Get([appID] + "/insights/" + [metricID] + "/" + [period] + "?format=json&since="+timeStampSince+"&until="+timestampUntil );
         Console.WriteLine(result["data"]);
于 2012-01-18T16:20:46.220 に答える