2011-08-02 43 views
0

我正在開發一個YouTube應用程序,該應用程序需要在數據庫中具有與其關聯的常用數據的用戶表。我決定爲這個應用程序使用OAuth路由,並且有兩個表,一個AccessToken和一個RequestToken。OAuth令牌:我可以鏈接到用戶表的什麼?

我不知道什麼是鏈接到某種用戶表,它會是訪問令牌或請求令牌?

  1. 如果令牌到期,我只是查找哪個用戶有該令牌,然後更新它?
  2. 要簽署用戶,我是否只刪除用戶的令牌並清除會話中的令牌?

編輯:換句話說,我基本上希望用戶無需註冊到我的網站,但只是通過OAuth登錄,並有我的應用程序創建的用戶表中的用戶條目所以我所有的其他數據的可與此聯繫起來。

回答

1

有兩個部分:登錄和資源。

如果您只想使用YouTube進行登錄,則根本不需要存儲訪問令牌。當用戶使用訪問令牌從YouTube返回時,您只需打一個電話即可獲取其YouTube帳號(不確定YouTube是否支持在令牌響應中使用該ID的擴展參數)並放棄訪問令牌。如果您還想撥打其他電話來訪問用戶的YouTube數據,則需要保留訪問令牌。

實現一個常見的方法是:

  1. 當用戶訪問您的站點設置與我們所說的狀態的一些隨機字符串的會話cookie。
  2. 用戶點擊「登錄與YouTube」
  3. 你去從YouTube獲得一個請求令牌,然後可以將其存儲在一些本地緩存(可以是數據庫,Redis的,內存,如果這是一個小規模的應用,memcache等)或加密並將其存儲在客戶端的另一個cookie中。在進行請求令牌調用時,在回調中包含一個'state'參數,並在#1中將值設置爲cookie。這是針對CSRF的重要安全防禦。另外,您的重定向端點應該使用SSL。
  4. 您將用戶重定向到YouTube與請求​​令牌(以及可選的加密的請求令牌密鑰的cookie)
  5. 用戶登錄到YouTube上,批准申請,然後被重定向回
  6. 您檢查用戶回來到重定向端點匹配最初通過比較傳入狀態參數的值和用戶的會話cookie的值而發送的用戶。
  7. 從本地緩存中提取請求令牌密鑰或解密先前使用的令牌祕密co​​okie(您決定使用哪種方法)並請求訪問令牌
  8. 使用訪問令牌進行YouTube API調用以獲取用戶信息
  9. 在您的數據庫中查找是否已擁有擁有該用戶名的用戶。如果你這樣做,這只是一個登錄,如果沒有,這是一個新的用戶註冊,所以在你的用戶表中創建一個新的記錄。
+0

偉大的信息..當你說在回調中包括狀態參數是,那麼用戶不能讓窗口打開很長一段時間? – Ryan

+0

此外,我一直在環顧四周,它看起來並不像youtube提供了一種方法來獲取用戶ID ... – Ryan

+0

狀態參數僅用於防止CSRF攻擊。基本上,確保攻擊者不能使用自己的請求令牌創建鏈接,並誘騙其他用戶將其關注回您的網站,並接管他們的數據。至於YouTube API,我沒有經驗,但我認爲您可以使用正常的Google API。 –

相關問題