有没有办法与Facebook图API得到一个列表中的所有活动创建一个单一的档案吗?我们的客户创造一大堆的事件和我们想要拉一个他们的名单。我说,他们只会必须确保他们为自己可以出席的事件,因为那样的话,我可以轻松地拉动活动列表,profileId出席,但我很好奇如果有另一种方式。也许一个FQL查询?他们看到需要查询在初级的关键。和什么FQL查询看起来像如果是这样的方式做到吗?

有帮助吗?

解决方案

我基本上用的 FQL 这@jhchen提供。然而,它花了我6个小时找出如何使用, FQL.所以我想,我想提供你一个工作脚本。它是不完美的,所以请更新它如果你找到一个错误。

  1. 下载 Facebook PHP SDK
  2. 添加 YOUR_APP_ID
  3. 添加 YOUR_APP_SECRET
  4. 添加 PAGE_ID
  5. 做出改变 FQL 声明您认为合适的。 FQL文件

其他比,你应该好好去。此外,我设定的缺省时区 America/Los_Angeles.这可能会引起问题对于你们中的一些,如果任何人有一个更好的方式来处理的时区,请让我知道。

PHP Code:

<?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;
}

其他提示

可以使用FQL。只是用创作者为您的where子句不起作用,因为创作者是不是可转位。但是解决方法是将包括可转位在哪里,除了创作者条款和罚球。例如:

选择EID,名称,PIC,创作者FROM事件WHERE EID IN(SELECT EID FROM event_member其中uid = 12345)和Creator = 12345

这是其中的一个“有没有好办法从这里到那里”的问题。不能使用FQL,因为创作者列没有索引。我可以在那一刻想到的最好的办法是使用Graph API查询创建者的活动连接,并过滤掉任何事件,他们不是创造者。这会不会是非常有效的,因为你会被下载所有用户的事件,即使他们没有创造的那些信息。所以,我会用它分解成两个查询实验:

graph.facebook.com/[user_id]/events?fields=id,owner&limit=1000

然后,一旦你过滤掉所有的事件,他们并没有创造:

graph.facebook.com/?ids=[event_ids for the user's events]

从zechdc答案是完美的,但我只是需要加入的strtotime为START_TIME工作。

$start_time = date('M j, Y \a\t g:i A', strtotime($key['start_time']));
$end_time = date('M j, Y \a\t g:i A', strtotime($key['end_time']));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top