2011-01-11 117 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。