2014-11-03 57 views
0

我試圖讓所有由他人發佈的內容在他自己的Facebook牆上發佈,其中包括圖像,視頻,文本或狀態更新。Node.JS - Facebook API - 獲取訂閱源但排除系統生成的虛擬狀態

我已經嘗試了以下API與Node.JS,但都導致了不同的問題。該API調用內容丟失或返回額外的系統生成的數據,如「用戶A已成爲用戶B的朋友」或「用戶喜歡圖片」。

讓我通過一些例子說明這一點:

  1. 網址:https://graph.facebook.com/barackobama/statuses。 API調用返回一個json文檔,其中最後一次update_time =「2013-07-01T15:08:15 + 0000」,但實際上Obama's page比這更新近得多。
  2. Url:https://graph.facebook.com/random.things.16/posts。 API調用返回空的JSON數組,而實際的facebook page包含一些圖片。如果您嘗試對其他一些用戶進行此API調用,您可能也會像上面提到的那樣獲取系統生成的狀態。
  3. Url:https://graph.facebook.com/CwcvilleGuardian/feed。與帖子API類似的問題。

請注意,系統生成的雕像,如「用戶喜歡的圖片」。我很樂意通過以下方式之一來處理它們:

  1. 如果某些參數可應用於API調用,則將其從結果中排除。
  2. 解決這個「一張圖片」,以便我們可以知道用戶喜歡哪張圖片。請注意,實際上用戶可以喜歡視頻,鏈接,帖子,評論或其他內容。

回答

0
  1. 的Facebook不再打電話東西純粹是 「狀態」 programmaticly很久以前。現在一切都是不同類型的「鏈接,狀態,照片或視頻」的「發佈」。所以,你如果你希望所有的帖子,你需要調用

    https://graph.facebook.com/v2.1/barackobama/posts

  2. 你正在試圖將對象是一個「用戶」類型的帳戶。您不能根據用戶名進行查詢,您必須使用應用程序作用域用戶ID(一個數字)。你看到的東西確實「看起來」像一個「頁面」,但是誰曾經設置過它,已經打破了Facebook的TOS,因爲它真的是一個「頁面」時被註冊爲「用戶」。這就是說你必須得到一個應用範圍的用戶ID才能獲得關於用戶的「公共」信息。您不需要應用範圍ID來獲取有關頁面的公共信息。爲了獲得應用程序範圍的用戶ID,用戶將授予您的應用程序權限,甚至可以獲取公共信息。

  3. 與2相同,但是這是一個用戶帳戶,所以在此沒有TOS違規。這裏您使用「Feed」而不是「Posts」。 「帖子」是用戶發佈到他們自己的時間表的所有內容的列表。 「Feed」是用戶發佈的內容以及其他人發佈到用戶時間表的內容的集合。

+0

謝謝,弗蘭克。現在測試實施,將在我解決之後再標記。 – Lee 2014-11-04 05:50:40