用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. 無法獲得手動活動的所有者和執行者
- 5. 更改活動的事件所有者
- 6. 獲取文件所有者/作者
- 7. Ruby:Twitter API:獲取所有關注者
- 8. 獲取所有者姓名
- 9. WPF獲取UserControl所有者
- 10. phpflickr - 如何通過所有者ID獲取照片所有者的用戶名?
- 11. 使用API以Java獲取Google日曆參與者的活動
- 12. ansible與根所有者創建的virtualenv
- 13. 通過github API獲取存儲庫的所有者
- 14. 行動的創建者
- 15. 通過SNMP獲取進程所有者
- 16. 語言C - 獲取進程所有者
- 17. 獲取mac地址所有者
- 18. Laravel - 爲獲取者和創建者設置3個函數
- 19. 如何使用REST API獲取SharePoint列表屬性'創建者'
- 20. Softlayer API獲取虛擬客人所有者
- 21. 獲得「所有者」豆
- 22. 無法更改羣組所有者(羣組所有者意圖)
- 23. 字體位圖創建者
- 24. 模式 - 圖創建者mongodb
- 25. 如何通過臉譜圖API獲取頁面所有者提要
- 26. 的Youtube API內容所有者錯誤
- 27. 如何獲取應用程序所有者訪問令牌?
- 28. Github API獲取特定行代碼的作者/提交者
- 29. Facebook圖形API獲取用戶的所有圖像
- 30. Google Calendar API V3獲得與會者和創建者Java腳本問題
我不再需要這樣做,也沒有時間去測試這個,但如果你花了6個小時,我會假設它是有效的。謝謝! – jwynveen 2011-11-18 20:25:11
它的工作原理(fql - 試用紅寶石),謝謝! – 2012-11-06 21:00:41
你不能使用事件本身的時區字段嗎? – Trefex 2013-05-27 21:25:16