2012-05-21 67 views
3

我有一個習慣用offline_access,這顯然需要改變,因爲那將會離開的應用程序。擴展Facebook服務器端的訪問令牌優雅

我們使用這個權限,當他們通過任意數量的API沒有我們的後臺交互,以消息發佈到用戶的Facebook塗鴉牆。我們有一個網站,在iPhone,Android,黑莓和諾基亞手機連接到應用程序,以及與硬件設備的接口,所有的這些都可以導致後端嘗試發佈到Facebook上的桌面應用程序的多個移動應用程序,但只有網站允許用戶使用Facebook進行初始授權。

從我所瞭解的情況來看,使用服務器端身份驗證會獲得60天的令牌,並且獲得新令牌的唯一方法是重新進行身份驗證過程,該過程假定用戶未更改密碼,登錄到Facebook,未取消授權的應用程序將只顯示爲一系列自動重定向。

有沒有其他方法可以做到這一點?例如,fb_exchange_token具體做什麼?它適用於這種情況還是僅適用於通過JavaScript API接收到的令牌?

除了合併原生Facebook API併爲網站做同樣的事情之外,我們還可以爲這些非網站用戶界面做些什麼嗎?


試圖使用fb_extend_token是毫無結果的。重新運行標準身份驗證返回相同的標記,但具有新的60天到期時間。稍後重做不會擴展令牌。我希望這意味着我只能每天做一次,而不是每個令牌一次。

回答

2

由於我使用的是服務器端流程,並且用戶永遠不能看到這些密鑰,所以我能夠稍微修改我的應用以使用我的應用令牌。這些密鑰屬於您的應用程序,讓您使用API​​代表用戶的,只要他們沒有取消他們的許可。用戶授權令牌可以到期,但只要用戶沒有明確地從他們已經允許的應用程序刪除您的應用程序,您的令牌將繼續允許您使用/用戶/ URL張貼到牆上時,/我/ URL不會工作,因爲您的令牌綁定到您的應用程序。

+0

鑑於60天到期時間,這仍然有效嗎?我是否試圖解決一個剛剛發生的問題,因爲我試圖發佈到「/我」而不是用戶? –

+0

不確定你在問什麼?使用應用程序令牌實際上是一種避免在通過服務器端身份驗證過程引導用戶時獲得的令牌到期時間的方法。如果您使用這些令牌並將其發佈到用戶的牆上,那麼該令牌將在60天后過期,並且您需要再次引導用戶完成該過程以擴展令牌。如果您使用您的應用程序令牌併發布到/ token /永遠不會過期的/ user/URL。只要用戶沒有撤​​銷權限,您就可以繼續使用它。主要的警告是你需要保持這個令牌的祕密。 – Sloloem

1

我相信offline_access的棄用已完成後,獲取/交換訪問令牌是滿足您需求的唯一方法。

任何在棄用前已脫機訪問的人至少可以正常使用您的應用程序60天。一旦這段時間結束,您必須重新授權用戶並將其訪問令牌延長60天。要做到這一點,您需要他們登錄並授權您的應用程序(如有必要)。然後你使用fb_exchange_token擴展他們的訪問令牌,所以它可以使用60天。

我相信你已經看到它,但它的全部概述在this文章中,更具體地說就是關於先前使用offline_access的章節。我還發現this後有用的做升級。 Here是另一個鏈接,進一步的細節如何處理無效的令牌。

+0

我現在通過常規後端流接收的令牌有效期爲60天,試圖請求fb_exchange_token根本不會改變它們,所以我可以看到令牌的到期時間倒計時。我在測試應用程序中啓用了遷移功能,因此,一旦他們完全獲取權限,我可以信任此行爲嗎? 我找不到任何有關fb_exchange_token的優秀文檔,所以我認爲它可能是客戶端流程使用的,用於交換短時間使用的令牌,例如,如果您已使用服務器端流程 – Sloloem

+0

進行身份驗證擴展您現在具有的令牌不會執行任何操作,因爲它們已設置爲60天。我假設你現在擁有的令牌是通過offline_access權限獲得的。 FB會將這些時間從永久截斷到60天,以準備進行offline_access棄用。只有當你獲得新的短命令時,你才能將其延長到60天。 來自文檔: 「如果你想刷新一個仍然有效的長期訪問令牌,你將不得不首先獲得一個新的短命用戶access_token」 –

+0

@ spoonybard896 - 假設我有一個60天的訪問令牌。我們在第59天 - 明天令牌將會過期。我發送一封自動電子郵件給用戶再次登錄。這會延長訪問令牌的使用壽命嗎?正如我現在嘗試它,它不會,它只是返回相同的訪問令牌。所以,不同的方式是否有可能獲得全新的訪問令牌? (一個新的短命的,然後我轉換爲60天)? FB.Login總是返回現有的非過期訪問令牌。謝謝。 – Wesley