2011-01-11 115 views
1

我知道這是之前發佈的,但從未真正回答過,我正在使用DotNetOpenAuth嘗試並執行GoogleID登錄,並且每次我都會這樣做details = OResponse.GetExtension<ClaimsResponse>();我總是總是返回null ,如果我無法取回任何信息,我不明白GoogleID的意義,我想至少我會得到一個電子郵件地址,所以我可以將其他登錄信息與我的數據庫相關聯。我只是不明白可以真的使用一些幫助,我可能只是在錯誤的方式看待openID。我正在使用ASP.NET,並希望使用openID/Facebook作爲登錄用戶的唯一方式,我真的不想惹惱成員角色或ASP.NET喜歡添加的額外垃圾。DotNetOpenAuth我需要一些幫助

+0

我試過用openautho DLL包含簡單的控制,我試過這個http://www.midnightprogrammer.net/post/Extending-OpenID-Implementation-With-ASPNET-User-Information-Roles-and -Membership.aspx,甚至該項目將返回null,你是否應該使用響應返回的URL,這將是你的唯一標識符。 – nagates 2011-01-11 03:07:26

+0

現在沒有時間去幫忙,但是請查看http://test-id.org/ - 你可以從那裏發出請求,看看它是否真的是谷歌或者它是你的事情 – Cameron 2011-01-11 07:25:24

+0

是的,你應該*總是*使用`IAuthenticationResponse.ClaimedIdentifier`作爲唯一標識符。 – 2011-01-11 21:22:20

回答

0

是的,這已被詢問並回答了很多次。谷歌確實支持AX。但它會忽略標記爲「可選」的任何屬性。所以如果你想要電子郵件地址,你必須說這個電子郵件地址是一個必需的屬性。

您正在檢查的ClaimsResponse擴展名不是AX--它是簡單註冊。但是,如果您打開了AXFetchAsSregTransform行爲(強烈推薦),那麼它只允許您僅使用ClaimsRequestClaimsResponse,DotNetOpenAuth將自動爲您在AX幕後翻譯。

或者,您可以使用FetchReqestFetchResponse直接向Google講AX。

但是(我不能錘得這個夠硬),不要使用電子郵件地址作爲用戶的唯一標識符!而是使用IAuthenticationResponse.ClaimedIdentifier字符串作爲唯一標識符。通常應將電子郵件地址視爲可用於預填註冊表單的有用提示。你甚至不應該相信你得到的電子郵件地址實際上是在用戶的控制之下(這就是爲什麼它不應該被認爲是他們唯一的ID),因爲提供者可以騙你。谷歌和雅虎是兩家承諾(如果您選擇信任他們)的電子郵件地址已經過驗證的供應商,所以如果您願意,您可以跳過用戶的電子郵件驗證步驟。

0

似乎Google的OpenID服務器不支持AX或sreg。