用Facebook Graph API获取单个配置文件创建的所有事件列表有没有办法?我们的客户创建了一系列活动,我们希望将其全部列出。我说他们只需要确定自己要参加这个活动,因为那样我就可以轻松地取得profileId参加的活动列表,但是我很好奇是否有其他方法。也许是一个FQL查询?他们看起来需要对主键进行查询。那么,如果这是做到这一点的方式,FQL查询会是什么样子?图形API - 获取所有者/创建者的活动
回答
我基本上使用@jhchen提供的FQL
。然而,我花了大约6个小时才弄清楚如何使用FQL
。所以我想,我会给你一个工作脚本。这并不完美,所以如果发现错误请更新它。
- 下载Facebooks PHP SDK
- 添加
YOUR_APP_ID
- 添加
YOUR_APP_SECRET
- 添加
PAGE_ID
- 变更这个
FQL
说法,你认为合适。 FQL Documentation
除此之外,你应该很好去。另外,我将默认时区设置为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;
}
这是其中一种“没有好的方法从这里出现”的问题。您不能使用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]
如jcmoney所述,您可以使用FQL和where eid in(从event_member中选择eid,其中包含uid = <...>)子句。 – 2010-10-05 09:25:15
您可以使用FQL。只是使用创建者作为where子句不起作用,因为创建者不可索引。然而,一种解决方法是包含一个可索引的where子句并引入创建者。例:
SELECT EID,名称,PIC,创作者FROM事件WHERE EID IN(SELECT EID FROM event_member其中uid = 12345)和Creator = 12345
从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']));
- 1. 活动创建者
- 2. 使用Facebook Graph API为另一位所有者创建活动
- 3. Facebook使用Graph API与多个所有者创建活动
- 4. Facebook Graph API:通过创建者获取活动
- 5. 无法获得手动活动的所有者和执行者
- 6. 更改活动的事件所有者
- 7. 获取文件所有者/作者
- 8. Ruby:Twitter API:获取所有关注者
- 9. 找出文件所有者/创建者
- 10. 获取所有者姓名
- 11. Google Calendar API - 导入活动:所有者必须是组织者或与会者
- 12. WPF获取UserControl所有者
- 13. 查询所有者/创建者的Google文档
- 14. 获取加入者的活动任务
- 15. 获取有关活动参与者的有用信息
- 16. 活动所有者或用户错误
- 17. phpflickr - 如何通过所有者ID获取照片所有者的用户名?
- 18. 使用API以Java获取Google日历参与者的活动
- 19. ansible与根所有者创建的virtualenv
- 20. 获取sharepoint 2007的价值作者(创建者)字段
- 21. 如何获取其他所有者共享的Google日历活动?
- 22. 获取Lotus Domino文档的创建者和最后修改者
- 23. 在ClearCase活动的非所有者可以提供活动
- 24. 获得“创建者所有者”的名字添加访问规则
- 25. 覆盖子类的所有设置者和获取者
- 26. sql将产品所有者列成组,并为主所有者和级联所有者创建一列
- 27. 通过github API获取存储库的所有者
- 28. API来获取所有搜索提供者/引擎的列表?
- 29. 行动的创建者
- 30. 使用所有者在Microsoft Graph API中创建组
我不再需要这样做,也没有时间去测试这个,但如果你花了6个小时,我会假设它是有效的。谢谢! – jwynveen 2011-11-18 20:25:11
它的工作原理(fql - 试用红宝石),谢谢! – 2012-11-06 21:00:41
你不能使用事件本身的时区字段吗? – Trefex 2013-05-27 21:25:16