2012-07-30 54 views
3

前段時間我用SDK做了幾個Facebook應用程序,但現在我想嘗試在不使用SDK的情況下製作一個。我很困惑如何使用令牌的工作。什麼是存儲Facebook訪問令牌的標準方法?數據庫或cookie?

我認爲Facebook的PHP SDK將訪問令牌存儲在cookie中,但大多數人似乎都將其存儲在數據庫中。我應該在哪裏存儲訪問令牌?

如果我將它存儲在數據庫中,那麼是否將用戶的ID存儲在cookie中?

回答

8

這是一個討論問題,因爲答案取決於你想用它做什麼。

只是過程的快速提醒:

  1. 獲得令牌(從某處)
  2. 交談Facebook和獲得與該令牌
  3. 更新令牌相關聯的用戶ID(如果尋找長期訪問令牌)
  4. 存儲令牌(如果您想記住它以後)
  5. 對UserID執行一些操作,使用令牌驗證調用。

令牌是Facebook的「SessionID」。只要持有該令牌,就可以找到擁有該令牌的用戶(如果該令牌仍然有效)。您可以保留該令牌的持有相同的方式,你會經常的SessionID,如果你寫你自己的會話處理程序:在會話變量($ _SESSION),這將同時PHP會話持久

  • 活躍
  • 在Cookie($ _COOKIE),而cookie有效期
  • 通過網頁之間傳遞的$ _GET或$ _POST變量
  • 在一個數據庫,這將持續存在 - 但你必須有其他的SessionID我們自己的控制之下(通過在$ _SESSION,$ _COOKIE,$ _GET或$ _POST)或其他方法來獲得正確的標記。

因此,對於工廠的運行,存儲在會話或cookie中,取決於哪種更適合您的網站。這是最簡單的。

你只去了一個數據庫存儲的複雜性有兩個目的:

  1. 您有控制您的應用程序(尤其是第三方應用程序,你不想惹另一個會議系統與他們的內部會話系統,所以添加自己的包裝在上面)
  2. 當用戶不存在時,你想做的事情(例如,在你自己的版主系統批准評論後張貼到牆上)。在這種情況下,您需要令牌批准帖子,但由於用戶不在場,您無權訪問$ _COOKIE或$ _SESSION等。

希望有所幫助。