2014-01-21 87 views
0

我試圖獲得有關事件的信息,我受到邀請。 我在Open Graph頁面創建了具有所有可用權限的訪問令牌,並使用它。通過Facebook API訪問事件

我可以取一個事件,但我看不到另一個,我很在乎。我注意到這個事件是「僅限邀請」,但它的設置超出了我的控制範圍。

它不顯示在我的活動/可能(當我點擊「也許」),當我嘗試通過ID(graph.facebook.com/id)訪問它,我得到錯誤消息「不支持的獲取請求「。

我想:

  • RestFB(爪哇) - 這是我的目的
  • PHP SDK
  • 的JavaScript SDK

我可以做更多的事情,除了使用FQL? 我讀過它,我想用簡單的請求來獲取活動,如本頁所述:https://developers.facebook.com/docs/graph-api/reference/event/

我可以附上代碼,如果這有幫助。 非常感謝你看看這個。

編輯: Java代碼:

FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN); 
    String attending = facebookClient.fetchObject("{event-id}/attending", String.class); 
    System.out.println("Attending: " + attending); 

它的工作原理就像一個事件的魅力,但失敗(返回數據的空數組)另一事件(我被邀請到兩個)。

JavaScript代碼:

FB.api(
    'https://graph.facebook.com/{event-id}', 
    'get', 
    null, 
    function(response) { 
    if (!response) { 
     alert('Error occurred.'); 
    } else if (response.error) { 
     document.getElementById('result').innerHTML = 
     'Error: ' + response.error.message; 
    } else { 
     alert('test'); 
     response['data'].forEach(function(entry) { 
      alert(entry['object']['name']) ; 
     }); 
    } 
    } 
); 

不返回錯誤,但響應[「數據」]數組爲空,而在另一種情況下適當地包含數據。

編輯2: 此外,我試着與restFB FQL。它相似不起作用 - 以下代碼只返回一個事件,例如http請求。

FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN); 

    String query = "SELECT name, eid FROM event where eid = {event1-id} OR eid = {event2-id}"; 
    List<FqlUser> event = facebookClient.executeFqlQuery(query, FqlUser.class); 

    System.out.println("Events: " + event); 
+1

請始終與您分享代碼。這告訴我們你到目前爲止所嘗試過的。此外,這個地方充滿了極客(包括我),代碼可以幫助我們更好地理解你的問題。 –

+0

可以肯定的是,您希望通過API接收第二個事件,您是否被邀請(因爲它是「僅邀請」)?因爲如果你不是,你只是沒有「看到」它的許可... – Tobi

+0

我寫道:「我被邀請都」。是的,我仍然被邀請參加。我可以用正常的方式看到它。最後的結論很明顯:) – Line

回答

0

似乎作品現在的預期。我認爲這是在Facebook本身的錯誤。

0

你可以寫你給一個(非遞減)RSVP反饋所有事件FQL查詢:

select eid, uid, rsvp_status from event_member where uid=me() 

如果你想看到的,根據事件數據,使用此:

select eid, name, description, start_time, venue, location, creator, host from event where eid in (select eid from event_member where uid=me()) 

請注意什麼寫權限事件表中的文檔:https://developers.facebook.com/docs/reference/fql/event/#permissions

你應該能夠通過JS SDK請求FQL這樣的:

FB.api(
    'https://graph.facebook.com/fql?q=' + encodeURIComponent("select eid, name, description, start_time, venue, location, creator, host from event where eid in (select eid from event_member where uid=me())"), 
    'get', 
    ...); 
+0

我知道我可以做到這一點。但我寫道:「除了使用FQL」。 – Line

+0

對不起,我沒有真正看到它......我更新了我的答案,以顯示如何通過JS SDK查詢FQL – Tobi

+0

您測試了這段代碼嗎?我複製並粘貼它,並得到錯誤:「錯誤:(#601)解析器錯誤:在位置6出現意外的'+'。」。當我將+改爲空格時,我得到「錯誤:(#601)解析器錯誤:意外的查詢結束。」當我將查詢更改爲「選擇eid,名稱,描述,start_time,場地,位置,創建者,來自eid =」{event-id}「」(因爲我知道ID如上所述)的事件的主機時,我得到:「Error :您的語句不可編制索引,WHERE子句必須包含一個可索引列,這些列在http://developers.facebook.com/docs/reference/fql鏈接的表中標有*。 – Line