2012-06-28 50 views
6

我試圖自動顯示來自Facebook頁面另一個網站的留言。我可以使用圖形API瀏覽器手動獲取一個。當我在代碼中使用生成的令牌時,一切都很好。問題是令牌很快到期。每天多次獲得新代碼是不現實的。我知道有一種方法以編程方式請求訪問令牌 - 在我的情況下通過PHP,但所有示例都要求提供應用程序祕密。由於這是一個頁面,而不是一個應用程序,因此沒有任何祕密。如何爲沒有應用程序或應用程序祕密的頁面獲取Facebook訪問令牌

我已經試過這樣:

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=MY_CLIENT_ID&redirect_uri=http%3A%2F%2FMY_SITE_URL&scope=user_status

我得到的回覆是這樣的:

{ 「錯誤」:{ 「消息」:「錯誤驗證應用程序無法獲取應用程序信息由於系統錯誤「, 」型。「: 」OAuthException「, 」代碼「:101 } }

我曾嘗試使用Fiddler攔截來自Graph API Explorer的調用,以查看我的代碼文件中需要的內容,但沒有任何運氣。

+0

_「由於這是一個頁面,而不是一個應用程序,所以沒有任何祕密。」 - - 那麼只需創建一個應用程序,讓試圖「解決」沒有真正的應用程序的事情變得更容易。您不需要設置任何應用程序頁面,畫布或頁面標籤網址 - 只需創建應用程序,然後設置一個用於登錄的域,然後使用該應用程序訪問令牌,使它們壽命長,然後查詢帶有這些令牌的圖表API。 – CBroe

回答

1

對於非私有(公共)圖形對象,您可以使用您的app_id作爲access_token。

你的app_id永遠不會改變,所以你永遠不需要更新它。問題是牆上的內容是你的嗎?

如果是這樣,您可以輕鬆使用您的app_id來完成此操作,而無需每次都請求訪問令牌。

但是,爲了有一個app_id,你需要在Facebook上用facebook開發者賬戶創建一個應用程序。據我所知,還沒有一種方法可以匿名向Graph API發出請求,

+0

作爲該公司的Web開發人員,我已被授予管理員訪問該頁面的權限。我想我需要在Facebook術語中更好地教育自己。它迷惑了我。我不明白如何創建應用程序會有所幫助,但現在已經推薦兩次。即使我這樣做,如何使應用程序和現有頁面之間的關聯? –

+0

沒關係。現在有道理。我剛剛創建了一個應用程序並請求訪問令牌,牆上的帖子又在工作。謝謝。 –

+5

我試圖使用app_id作爲訪問令牌將數據發佈到我的Facebook頁面,但我收到錯誤「無效的OAuth訪問令牌」。如果您有任何示例代碼,請更新。 –

14
  1. 使用APP-ID建立這種聯繫授權的 頁https://www.facebook.com/dialog/oauth?client_id=MY_CLIENT_ID&redirect_uri=MY_SITE_URL&scope=manage_pages&response_type=token

  2. 兌換令牌燙髮(長令牌)
    https://graph.facebook.com/oauth/access_token?client_id=MY_CLIENT_ID&client_secret=MY_CLIENT_SECRET&grant_type=fb_exchange_token&fb_exchange_token=(from鏈接1)

  3. 訪問此頁面的管理,找到您想要發佈的網頁並複製新的access_token https://graph.facebook.com/me/accounts?access_token=(來自鏈接2)

  4. 使用這個最後一個記號(形式LINK3)張貼到頁面的應用程序

  5. 採取備忘將在60天后到期。 (FB不再提供無限的離線訪問令牌)

編輯(2013年10月24): 5點不再是真實的,從長壽命的用戶令牌不會過期生成的頁面訪問令牌。

編輯(2016年2月):令牌現在「通常」在60天內到期,但可以在任何時候失效。

+0

感謝您的快速響應。當我嘗試第一步時,我會收到「發生錯誤,請稍後再試。」我在這個過程中嘗試了類似的步驟,這就是我通常得到的迴應。另外,我不想管理頁面或發佈到頁面。我只想從頁面閱讀牆貼,並將它們發佈到另一個網站。最後,頁面有祕密嗎?我知道的應用程序,但這不是一個應用程序。這是解決這個問題的一個主要挫折,幾乎所有的例子都假設你試圖附加到應用程序,而不是頁面。再次感謝。 –

+0

你是否更改過CLIENT_ID和SITE_URL變量? – MPaulo

+0

爲什麼「第五點不再是真的」?真的有效期限是60天還是無限? http://facebooksdk.net/docs/web/handling-expired-access-tokens/ – Elyor

相關問題