从OpenID提供程序请求电子邮件地址

从OpenID提供程序请求电子邮件地址,openid,dotnetopenauth,Openid,Dotnetopenauth,我正在实现OpenID,我想检索用户的电子邮件地址和其他有关用户的信息,我正在这样做: var fetch = new FetchRequest(); fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email)); request.AddExtension(fetch); 但是提供者没有返回任何内容。我正在使用DotNetOpenID 我做错了什么 谢谢 编辑: 当我尝试使用MyOpenID或Google

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

var fetch = new FetchRequest();
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email));
request.AddExtension(fetch);
但是提供者没有返回任何内容。我正在使用DotNetOpenID

我做错了什么

谢谢

编辑:


当我尝试使用MyOpenID或Google注册时,他们都说plaxo正在请求其他信息,但当我测试我的网站时,他们什么也没说…

也许你没有做错什么-提供商可能只是不支持请求,或者选择不发送请求的信息


“与所有OpenID扩展一样,仅发送包含扩展的请求并不保证提供商将向该扩展发送响应。提供商可能不支持该扩展,或者可能选择不发送任何响应。”

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

我想,我的肌细胞减少症不会进行属性交换。不过,他们会进行sreg(简单注册),因此在您的请求中添加一个
ClaimsRequest
扩展,您将从一些提供商那里获得
ClaimsResponse

谷歌只做AttributeExchange,只提供一个电子邮件地址。你的代码中唯一缺少的是,谷歌甚至不会自愿提供电子邮件地址,除非你在请求中将其标记为“必需”。在AttributeRequest构造函数中添加一个“、true”第二个参数,然后Google应该亮起并提供用户的电子邮件地址


这里有一些。

Andrew,你能用一些C#sreg代码示例编辑这个回复吗,或者用一些代码链接到博客文章/网站教程吗?Pure.Krome,我已按要求添加了一个链接。