2011-09-27 72 views
2

好的,這是我的問題。 我瞭解OAuth協議的過程,但我對此有一些疑惑。 我試圖利用DotNetOpenAuth.Here是我沒有得到的東西。 假設用戶(新用戶)嘗試使用Twitter登錄我的網站。 的過程是這樣的(隨時糾正我,如果我錯了):使用DotNetOpenAuth的OAuth?

  • 請求令牌的情況下(如果我的ConsumerKey和ConsumerSecret都OK)。
  • 然後發出授權令牌並將用戶重定向到Twitter。
  • 用戶授權我的應用程序。併發出訪問令牌。
  • 我得到當前用戶的詳細信息並將它們存儲在數據庫中(以及訪問令牌)。

到目前爲止,這麼好。 現在這裏是令人困惑的部分。用戶註銷。然後回來並嘗試再次使用Twitter進行身份驗證。我如何確定他的訪問令牌?如果我在訪問令牌之前無法獲得他的身份?我有他的數據庫,但我無法確定他是誰,然後再次通過相同的步驟。我確定我錯過了一些東西,如果你指出,我會很感激。我知道IConsumerTokenManager,我試着對InMemoryTokenManager進行逆向工程,看看它是如何工作的,但它仍然不清楚。

回答

5

啊,使用授權協議驗證的樂趣(ahem,缺乏它)。我不喜歡的OAuth用於登錄哎呀...

有了這樣的方式,讓我澄清流動的比特:

  • 「未經授權」請求令牌發出(如果您的ConsumerKey和ConsumerSecret沒問題)。
  • 用戶授權您的應用程序,並將其發送回您的應用程序
  • 您的請求令牌現在是「授權」,DotNetOpenAuth將其交換爲訪問令牌。
  • 您使用訪問令牌來獲取當前用戶的詳細信息並將它們存儲在數據庫中。

當以後,匿名用戶訪問您的網站並希望登錄時,您可以全面啓動流程。只有這一次,因爲Twitter識別用戶(如果需要,他們登錄後)Twitter可能會立即將用戶重定向回您的應用程序,而不是要求用戶確認登錄。請求令牌將被授權,您將交換它爲訪問令牌,並且您將使用它來獲取用戶的數據。哦!現在您可以看到數據與數據庫中已存在的條目相匹配,並且歡迎您的訪問者回來。

+0

謝謝您花時間回答我。我知道OAuth用於授權(它的名稱正確:)),我已經爲OpenId編寫和測試了代碼,並且使用您的框架輕而易舉。我會隨時推薦它。 (不幸的是)使用Facebook/Twitter身份驗證的唯一方法是通過OAuth。我已經寫了一個數據庫的消費者令牌管理器,但是twitter每次都在不停地要求我授權......所以我想我錯過了一些東西。 –

相關問題