2011-10-17 22 views
2

我想在我的網站上使用OpenId,以允許用戶註冊使用Google,Twitter,Facebook ...我見過很多圖書館來實現,在PHP中,但我有一些懷疑;尤其是當我的網站請求用戶註冊時的一些信息:PHP - 如何實現用戶註冊使用OpenID

1-)id由系統生成。當用戶註冊OpenId EVERY服務時會生成一個id,它是怎麼回事? 2)用戶名。怎麼樣,我需要問用戶? 3)密碼。我不認爲gogole給我一個帳戶的密碼,我需要問這個用戶嗎? 4_)我認爲有沒有問題的電子郵件

另一件事:我注意到,許多網站使用OpenID或類似的寫入「登錄/登錄」,而不是「註冊」,我可以用OpenID只要用戶連接到服務,設置一個註冊或只有一個登錄纔有效?

回答

5

OpenID的工作原理是這樣的:

  1. 用戶訪問您的網站
  2. 他們有一個帳戶「登錄」,他們已經與其他服務中
  3. 他們點擊登錄inwith的其他服務,它們被重定向到該服務,並且您的站點頁面的URL被附加到請求中
  4. 他們登錄(如果尚未登錄)服務,然後服務會詢問他們是否要允許授權共享詳細信息與您的網站
  5. 如果用戶批准授權,它們將被重定向到您網站上的返回(始發)URL,然後他們用於登錄的服務(取決於服務和用戶允許的內容)也會將用戶的信息發送給您的網站重定向
  6. 當你的網站拿起這個信息,它就可以處理用戶在爲已登錄(或者被拒絕)

有在網絡上有很多有關如何處理作品以及如何處理它:

http://openid.net/developers/

http://www.windley.com/archives/2006/04/how_does_openid.shtml

http://tinisles.blogspot.com/2008/02/how-does-openid-work.html

我也建議searching SO

How does OpenID authentication work?

你甚至可以看到,那些誰建的人,所以本身已經涵蓋了問題:

http://www.codinghorror.com/blog/2008/05/openid-does-the-world-really-need-yet-another-username-and-password.html

如果您想使用該服務進行註冊,請注意您僅限於獲取用戶也選擇分享的框架定義的信息(例如,位置,名稱,電子郵件等) - 因此,它應該用於用戶通過另一個服務(即谷歌等)登錄,或者「自動」填充註冊表單的某些共享字段,但是這是一個半冗餘使用該服務 - 我建議限制它僅限登錄,您應該保持獨立的任何專有註冊過程。

+0

完美。因此,如果我選擇登錄,用戶必須始終使用相同的服務權限登錄? –

+0

不,他們可以使用您在網站上支持的任何OpenID服務(基本上是一系列鏈接,他們的迴應是相同的結構)登錄 - 他們不限於選擇同一個:) – SW4

+0

是的,但我怎麼能識別如果用戶xy沒有使用相同的電子郵件,那麼用戶xy使用與twitter一樣的身份登錄Facebook?而對於返回的用戶,我需要爲eaxh類型的用戶創建一個不同的mysql表,或者openid向用戶發送一個id或類似的東西,並且每個服務都是唯一的? –