Facebook FQL-ユーザーが参加しているすべてのファンページイベント
-
24-10-2019 - |
質問
FacebookのMultiquery FQLを介して以下を達成しようとしています。「参加している」すべてのファンページイベントのリストを取得しています。
以下のロジックがあり、以下のFQLステートメントで同様のものを実装しようとしました。
- ファンページから作成されたすべてのイベントのリストを取得します(特定のIDを使用)
- 参加するすべての(ユーザー)イベントのリストを取得します
- Event_member FQLテーブルのEidを一致させます
- 彼らがIDに一致し、RSVP_STATUSが参加することに等しい場合
- 結果を表示します。
FQLマルチ
{"query1": "eid from eid in eid in(event_member from uid = $ fanpageidを選択)、" query2 ":" event_memberからrsvp_statusを選択するuid = $ uidand eid in(select eid from#query1) "" }
私は声明が間違っていることを知っていますが、私はこれをやろうとするのに苦労しています。 PHPコードで非常に乱雑なforeachループセットを使用して、グラフAPIを介してこれを達成しました。
単一のマルチキーFQLステートメントを使用すると、はるかに効率的です。
どんな提案でも素晴らしいでしょう。
編集
問題がある問題は、IfaourのFQLステートメントがFQLクエリコンソール内で動作する(結果を返す)ですが、次の実行時に空の配列が返されます。
ステートメントを(creator = $ fanpageidからイベントからEidを選択してください)に分析すると、FQLコンソールはeidがインデックス不可であることを強調します。
これが私のPHPです
function userseventspoints($ uid、$ facebook、$ fanpageid){
$events = "SELECT eid FROM event WHERE creator=$fanpageID AND eid
in(event_memberからeidを選択します。ここで、uid = $ uidおよびrsvp_status = "Anterding ") ";
$eventsAttendance = $facebook->api(array( 'method' => 'fql.query', 'query' =>$events, )); $eventsAttendingcount = 0;
foreach($ eventyattendance as $ eventsattendancefetch){
if($eventsAttendanceFetch['eid'] == true){ $eventsAttendingcount++; } } return $eventsAttendingcount; }
BlockQuote
何か案は?
解決
それは非常に簡単な作業です:
SELECT eid FROM event WHERE creator = $fanpageID AND eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status = "attending")
これにより、作成/所有されているすべてのイベントのIDを返します。 $fanpageID
idとあなたはのメンバーです(me()
)そしてあなたのステータスはです attending
.
編集:
カウントを取得するためだけに返された配列をループしていますか?!単に使用できます。
$eventsAttendingcount = count($eventsAttendance);
また、あなたが一致しているユーザーがあなたのアプリケーションを承認し、あなたに正しい許可を与えていることを確認してください!
他のヒント
私は問題が何であるかを理解していません - 私はあなたのFQLステートメントを実行し、それがイベントのリストを返してからRSVPステータスを返しますか?
別のメモでは、使用してみませんか events.get 方法。ユーザーIDを渡すと、イベント情報が表示されます。 RSVPステータスでフィルタリングできます。
チェックして、events.getメソッドは非推奨の過程にあります。
イベントの参加者のリストを提供する新しいグラフAPIを使用する必要があります。
http://developers.facebook.com/docs/reference/api/event
使用して参加者のリストを取得します
イベントが設定されているFacebookログユーザーの次の10のイベントを取得したい場合 attending
次に、このような迅速なクエリを作成できます。
let graphPath = "/me/events?limit=10&type=attending&since=now"
let params = ["fields": "id, name, category, start_time, end_time, timezone, updated_time, type, attending_count, owner, place"]
let request = GraphRequest(graphPath: graphPath, parameters: params, accessToken: accessToken, httpMethod: .GET, apiVersion: apiVersion)
request.start {}