2014-01-31 50 views
0

我建立使用硅石(PHP微架構),一個非常簡單的API PHP API認證。 我有一個關於如何使用Facebook連接或用戶名/密碼認證用戶的想法。如何建立與Facebook令牌和用戶名/密碼

我想建立這個API提供數據給我的移動應用程序。我的API使用HTTPS。 與Facebook的身份驗證:

  • Facebook連接發生在移動應用
  • 移動應用正在發送的用戶令牌和facebook_id的API
  • 的API檢查用戶的Facebook ID要求/me?token=...
  • API檢查Facebook app_id是否正確/app?token=...
  • - >該用戶確實存在並且已通過身份驗證

現在使用登錄/密碼:

  • 移動應用發送的用戶名和編碼的密碼
  • 的API檢查combinaison是正確
  • - >用戶不存在,並且驗證

問題是關於用戶會話。我並不是真的想要對每個請求都進行這種測試(例如,Facebook身份驗證有2個Facebook請求)。

我想打開該用戶的會話,並儲存某種API令牌。該令牌將被哈希和鹽漬(鹽+ user_id +時間交付)。我會將它存儲在會話表中,只需檢查該令牌是否仍然有效並屬於請求用戶。

因此,移動應用程序將只發送用戶ID +爲每個請求的API令牌。

你怎麼看?你有沒有更好的解決方案,保持簡單? 或者您是否看到有關此設計的任何問題?

乾杯, 馬克西姆

+0

也許你應該簡化你的問題,因爲知道你到底在問什麼是相當困惑的(我認爲這就是爲什麼你有投票權。) – dennis

回答

1

Facebook的認證流基於所述OAuth 2.0協議。有關協議的更多信息可以在here找到。

流程遵循以下一般步驟:

  • 判斷是否有人已經登錄
  • 如果他們還沒有登錄,促使他們這樣做(同一個登錄對話框)。
  • 交換安全代碼以確認身份。
  • 生成訪問令牌。

一旦你的客戶端獲得訪問令牌,應該存儲令牌。客戶端然後可以使用訪問令牌代表用戶執行API請求。因此,只要您擁有訪問令牌,則無需再次執行上述步驟(除非該令牌已過期)。

Facebook提供了許多SDK供您使用,包括一些移動SDK。我建議你爲你的移動應用程序使用適當的SDK。使用Facebook實現OAuth 2.0對話框比手動完成所有事情要容易得多。開始閱讀here

0

您可以將Facebook ID保存在第一次用戶登錄中。然後檢查活躍的Facebook用戶後,你可以在Mysql中搜索和比較現有的Facebook ID。

相關問題