2011-05-08 96 views
6

我正在嘗試將facebook身份驗證與一個asp.net站點進行整合。Facebook身份驗證和Asp.Net成員身份

因此,如果用戶決定在網站註冊,他們可以通過使用他們的Facebook憑據進行註冊。

我目前在我有Facebook訪問令牌和用戶的詳細信息,不知道我應該從這裏走。

該網站使用asp.net會員資格授權。

這是我相信情況應該發生一個新的用戶決定註冊:(但不知道這將要走的路)

0)用戶訪問該網站,並決定使用他們的Facebook憑證進行登記。
1)用戶提供他們的憑證,我收到一個訪問令牌及其用戶信息。
2)我將這些信息存儲在我的數據庫中,並用我收到的數據創建一個asp.net會員用戶。 (此時我必須生成密碼)。
3)將用戶登錄到網站,以便他可以自由導航。

如果我在正確的路徑上以及如何生成密碼,我將不勝感激。 (我想,也許在結合電子郵件和Facebook用戶id,檢索哈希和存儲。)

感謝

更新1
我發現this SO問題,他們建議使用:

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.setauthcookie(v=VS.90).aspx

回答

4

我覺得你的做法是合理的;你有效地做的是用接收到的facebook標識替換用戶名/密碼認證,並讓該標識在你的應用程序中作爲有效標識傳遞。

你說你需要在你的應用程序中生成一個密碼,我注意到它是完全可以確定的。誠然,就ASP.NET中的成員資格提供者而言,您將需要使用密碼創建用戶,但如果您只希望用戶使用Facebook連接登錄,則可以選擇填寫隨機字符串。

決定綁定哪個facebook屬性也值得一點說明。自然的選擇當然是facebook標識符,因爲這對用戶來說是不容置疑的,但如果您選擇稍後允許使用其他身份驗證機制 - Google會爲其中一個身份驗證機制開放 - 您可能還會從存儲來自Facebook等的電子郵件中受益。

也許這也是一個好主意,在你未定義的facebook應用程序中自動生成用戶名。如果您選擇Facebook標識符作爲登錄名稱,則您很難依賴Facebook,導致新身份提供商難以引入。如果您選擇一個隨機標識符和一個建立Facebook標識和您的ID之間的連接的關聯表,您稍後也可以獲得一些靈活性。如果您想從LoginStatus等ASP.NET登錄控件獲得有意義的輸出,選擇稍微有限的電子郵件地址可能是更好的選擇。

2

我還沒有閱讀下面/上面的回覆,所以這可能已經被覆蓋,但被警告說,我遇到了一個嚴重的問題,沒有在IE中的iframe中設置cookie。這是一場血腥的噩夢。我不確定這是否已修復,如果是可修復的,但只是意識到我的經驗並在全部瀏覽器中進行徹底測試。

同時結帳.net open auth項目。我沒有親自使用它,但它應該支持OAuth以及OpenId & ICARD,稍後可能會對其他集成點有所幫助。