用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