2010-04-28 90 views
1

根據這一政黨成員:實施的OpenID

http://www.plaxo.com/api/openid_recipe

步驟之一是:

需要查找的OpenID的 是否進入已經屬於現有 用戶在您的網站

我的問題:

什麼是OpenID喜歡爲gmail帳戶(我還沒有其他OP帳戶呢)?在我看來,OpenID = https://www.google.com/accounts/o8/id gmail,但我怎麼用它來查找,因爲它是所有用戶都一樣?

+0

真正的id(Dav提到的)將在openid響應的'openid.claimed_id'變量中可用。閱讀http://code.google.com/apis/accounts/docs/OpenID.html#Samples瞭解更多信息。 – Amarghosh 2010-04-28 05:57:00

+0

因此,該ID不是用於直接登錄,而是用於檢索信息? – openid 2010-04-28 06:26:05

回答

1

https://www.google.com/accounts/o8/id是您用於登錄的內容。成功登錄後,Google的響應將包含openid.claimed_id變量中的長唯一網址(帶散列);這是你應該存儲在數據庫中的一個,並比較它是否是新用戶或現有用戶。

在像myopenid這樣的其他openid提供程序中,兩者(登錄url和claims_id)都是相同的。

+0

但我貼的tuto似乎說,OpenID可以在重定向到Gmail之前得到? – openid 2010-04-28 06:54:49

+0

此頁面無法訪問;但是,正如我所說的,對於像myopenid等其他提供商的情況,您可以在重定向之前獲得唯一的ID:但是,如何確認用戶沒有說謊 - 您只能根據openid的響應來確認身份提供者,無論是谷歌還是myopenid。 – Amarghosh 2010-04-28 07:04:50

+0

這正是我的想法! – openid 2010-04-28 07:10:19

3

它實際上是https://www.google.com/accounts/o8/id?id=XXXXXXXX對於一些唯一的字符串XXXXXXXX在對應於用戶的結尾。

從你的鏈接頁面進一步下跌:

當OpenID提供商重定向到 您的return_to URL,就會增加額外的查詢字符串的 一堆包含驗證所需的 信息 參數 用戶使用此012xxOpenID進行身份驗證。根據您使用的OpenID 庫,您可能需要將這些數據收集到一個數據結構 以傳遞到驗證 函數,或者它可能爲您執行。

其中之一就是那個字符串。從谷歌的OpenID文檔:

甲谷歌提供的標識符,該標識符 具有到用戶的實際 谷歌的帳戶名或密碼 沒有關係,被附加作爲查詢 參數openid.claimed_id。

+0

這是否成立:'xxxxx' ='user @ gmail.com'? – openid 2010-04-28 05:53:25

+0

不。它包含一個與任何特定用戶信息不對應的哈希字符串,唯一的保證是同一個用戶將具有相同的哈希字符串。 – Amber 2010-04-28 05:54:10

+0

此外,您可能希望查看Google自己的文檔:http://code.google.com/apis/accounts/docs/OpenID.html - 相關報價,「Google提供的標識符,與用戶的實際的Google帳戶名稱或密碼作爲查詢參數openid.claimed_id追加。「 – Amber 2010-04-28 05:55:06

1

這裏的關鍵區別在於,https://www.google.com/accounts/o8/id不是OpenID標識符,不像本教程的方式。因爲,正如你所指出的,所有用戶都是一樣的。在terminology of the specification中,它是「OP標識符」,它標識供應商(Google),而不是用戶。

這種做法(進入供應商的標識,而不是用戶)並不常見當時一種OpenID的啓用寫你的網站的食譜。使用此流程時,用戶沒有標識符,直到用戶通過id_res響應從提供商重定向回您的站點。

另外,Google現在可以提供更清晰的標識符URL。如果您設置了Google個人資料,則您的個人資料頁面(http://www.google.com/profiles/myProfileName)也是一個OpenID。與/accounts/o8/id標識符不同,此標識符在您使用它的所有站點中都是穩定的,沒有涉及任何時髦的散列字符串。