openid - 向 OpenID 提供商请求电子邮件地址

标签 openid dotnetopenauth

我正在实现 OpenID,我想检索用户的电子邮件地址和有关用户的其他信息,我正在这样做:

var fetch = new FetchRequest();
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email));
request.AddExtension(fetch);

但是提供者没有返回任何内容。我正在使用 DotNetOpenID

我做错了什么?

谢谢!

编辑:

当我尝试在 http://www.plaxo.com/ 注册时使用 MyOpenID 或 Google,他们都说 plaxo 正在请求附加信息,但当我测试我的网站时,他们没有说什么......

最佳答案

正如 Martin 所说,这取决于提供商。

我认为,MyOpenID 不执行 AttributeExchange。不过,他们会执行 sreg(简单注册),因此请在您的请求中添加 ClaimsRequest 扩展,然后您将从某些提供商处获得 ClaimsResponse 返回。

Google 仅进行 AttributeExchange,并且仅提供电子邮件地址。您的代码中唯一遗漏的是,Google 甚至不会自愿提供电子邮件地址,除非您在请求中将其标记为“必需”。将“, true”第二个参数添加到 AttributeRequest 构造函数中,然后 Google 就会亮起并向您提供用户的电子邮件地址。

这里有一些docs and samples of getting attributes .

关于openid - 向 OpenID 提供商请求电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/594548/

相关文章:

ASP.NET MVC3 - ActionResult 将 DotNetOpenAuth WebResponse 呈现为字符串

c# - DotNetOpenAuth 4 不读取配置值

python-openid 不提供 ax 或 sreg 属性

elasticsearch - Elasticsearch中区分大小写的电子邮件ID处理程序,用于基于OpenID的用户身份验证

php - Steam 身份验证 session

asp.net-mvc - 使用 DotNetOpenAuth 从 Google 帐户同时获取联系人和日历

asp.net - 将 OpenID 集成到网站的注册过程中

web-applications - 如何通过openId获取登录凭据?

gmail - 通过 DotNetOpenId 检索 GMail 数据

asp.net-mvc-4 - 派生类型必须与基类型的安全可访问性相匹配,或者难以访问