2012-08-06 151 views
2

需要通過PHP將網站上的故事發布到指定的Facebook頁面。離線訪問權限已過時,所以我基本上需要獲取用戶訪問令牌,以便我可以獲取頁面訪問令牌(以頁面形式發佈),但這些令牌過期並擴展它們需要直接要求用戶在彈出窗口中擴展權限(正確我如果我錯了)。獲取Facebook頁面訪問令牌以自動發佈到Facebook頁面牆

因此,也許有一種方法在後臺登錄可以這麼說,所以,如果用戶訪問令牌已過期,我在登錄用戶,並獲得新的訪問令牌?或者,也許有一種方法來獲得永無止境的用戶訪問令牌,並通過它獲得永無止境的頁面訪問令牌?

不明白爲什麼它如此很難做到,尤其是如果我自己的網站和Facebook頁面,其中我願意發佈到。

回答

5

我剛剛發現瞭如何做到這一點,搜索計算器的提問,使我可以回答這個問題:)

首先,它不是你要問延長訪問令牌的用戶,這是你。您需要擴展自己的用戶訪問令牌。您的用戶的訪問令牌可以在https://developers.facebook.com/tools/accesstoken/的名稱'用戶令牌'下找到。

下一步是通過提出這個要求來擴展此令牌的生活:

GET /oauth/access_token? 
    grant_type=fb_exchange_token&   
    client_id={app-id}& 
    client_secret={app-secret}& 
    fb_exchange_token={short-lived-token} 

{app-id}{app-secret}是在你的應用在developers.facebook.com儀表板上的信息和{short-lived-token}是「用戶令牌「,你剛剛找到。

您不必通過php SDK進行調用,您可以使用瀏覽器來請求頁面graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token}(注意:它返回值爲access_token={access-token}&expires={seconds},因此請不要複製整個內容)。

現在,當你使用這個擴展的用戶令牌你的頁面訪問令牌,這將是不朽的。使用新的令牌進行此API調用(注意:在進行調用之前,您必須授予進行此調用的權限'manage_pages'和稍後發佈到頁面的'publish_actions'。最簡單的方法是點擊在https://developers.facebook.com/tools/explorer/「獲得訪問令牌」按鈕,你需要給權限是「擴展權限」選項卡下):

GET /me/accounts 

你會得到你的頁面的列表和他們的一些信息與訪問令牌一起爲他們每個人。

那些訪問令牌不會過期。你可以檢查在https://developers.facebook.com/tools/debug/

+0

這節省了我的一天。非常感謝你!你的賞金在路上 – 2017-03-20 22:16:22

0

您需要爲您的頁面創建一個連接器應用程序,然後爲您的應用程序獲取永久訪問令牌。您可以在Facebook文檔的Authenticating as an App頁面上看到此過程的詳細信息。

+0

真的有可能發佈的應用程序訪問令牌的東西?在我看來,這種令牌只允許檢索信息。如果我在調試器中測試應用程序訪問令牌,則只有應用程序標識;如果我用適當的權限測試用戶access_token,那麼我也會看到權限。 – banesto 2012-08-06 13:06:42

+0

我不認爲這會起作用,應用程序access_token不會爲帳戶連接授予適當的權限。你需要一個用戶access_token來檢索頁面的access_token – TommyBs 2012-08-06 13:31:48

+0

@TommyBs如何在沒有重定向的情況下完成?我有用戶,通過,appId,appSecret - 我可以使用一些API調用獲取新用戶access_token? – banesto 2012-08-06 13:35:43