繁体   English   中英

从OpenID提供商处请求电子邮件地址

[英]Request email address from OpenID provider

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

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

但提供者不会返回任何内容。 我正在使用DotNetOpenID

我究竟做错了什么?

谢谢!

编辑:

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

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

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

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

以下是一些获取属性的文档和示例

也许您没有做错任何事情 - 提供商可能不支持该请求,或者选择不发送所请求的信息。

http://blog.nerdbank.net/2008/07/how-to-use-dotnetopenid-attribute.html “与所有OpenID扩展一样,仅发送带有扩展名的请求并不保证提供商将发送回复该延期。提供商可能不支持该扩展,或者可能选择不发送任何回复。“

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM