图谱API - 由所有者/创建者获取事件

jwy*_*een 13 events facebook facebook-fql facebook-graph-api

有没有办法使用Facebook Graph API获取由单个配置文件创建的所有事件的列表?我们的客户创建了一系列事件,我们想要列出所有事件.我说他们只需要确保他们自己参加活动,因为那时我可以轻松地提取profileId参加的活动列表,但我很好奇是否有另一种方式.也许一个FQL查询?他们看起来需要对主键进行查询.那个FQL查询看起来会是什么样子呢?

zec*_*hdc 16

我基本上用的FQL是@jhchen提供的.但是,花了大约6个小时来弄清楚如何使用它FQL.所以我想,我会为你提供一个有效的脚本.它并不完美,所以如果你发现了一个bug,请更新它.

  1. 下载Facebooks PHP SDK
  2. YOUR_APP_ID
  3. YOUR_APP_SECRET
  4. PAGE_ID
  5. 根据需要对FQL声明进行更改.FQL文档

除此之外你应该好好去.另外,我将默认时区设置为America/Los_Angeles.这可能会给你们中的一些人带来麻烦,如果有人有更好的方法来处理时区请告诉我.

PHP代码:

<?php
require_once("php/facebook.php");

date_default_timezone_set('America/Los_Angeles');

function display_events()
{
    $app_id = 'YOUR_APP_ID';
    $secret = 'YOUR_APP_SECRET';
    $page_id = 'PAGE_ID';

    $config = array();
    $config['appId'] = $app_id;
    $config['secret'] = $secret;
    $config['fileUpload'] = false; // optional

    $facebook = new Facebook($config);

    $fql = 'SELECT 
                eid, 
                name, 
                pic_square, 
                creator,
                start_time,
                end_time
            FROM event 
            WHERE eid IN 
                (SELECT eid 
                    FROM event_member 
                    WHERE uid='.$page_id.'
                ) 
            AND end_time >= ' . mktime() . '
            ORDER BY start_time ASC
    ';

    $ret_obj = $facebook->api(array(
        'method' => 'fql.query',
        'query' => $fql,
    ));

    $html = '';                            
    foreach($ret_obj as $key)
    {
        $facebook_url = 'https://www.facebook.com/event.php?eid=' . $key['eid'];

        $start_time = date('M j, Y \a\t g:i A', $key['start_time']);
        $end_time = date('M j, Y \a\t g:i A', $key['end_time']);

        $html .= '
            <div class="event">
                <a href="'.$facebook_url.'">
                    <img src="'.$key['pic_square'].'" />
                </a>
                <span>
                    <a href="'.$facebook_url.'">
                        <h2>'.$key['name'].'</h2>
                    </a>
                    <p class="time">'.$start_time.'</p>
                    <p class="time">'.$end_time.'</p>
                </span>
            </div>
        ';
    }

    echo $html;
}
Run Code Online (Sandbox Code Playgroud)


jhc*_*hen 12

您可以使用FQL.仅使用creator作为where子句不起作用,因为创建者不可索引.但是,解决方法是包含一个可索引的where子句,并另外抛出创建者.例如:

SELECT eid,name,pic,creator FROM event WHERE eid IN(SELECT eid FROM event_member WHERE uid = 12345)AND creator = 12345