我正在实现OpenID,我想要检索用户的电子邮件地址和其他有关用户的信息,我正在这样做:
var fetch = new FetchRequest();
fetch.AddAttribute(new AttributeRequest(WellKnownAttributes.Contact.Email));
request.AddExtension(fetch);但是提供者不会返回任何内容。我正在使用DotNetOpenID
我做错了什么?
谢谢!
编辑:
当我尝试使用MyOpenID或谷歌在http://www.plaxo.com/上注册时,他们都说plaxo要求提供额外的信息,但当我测试我的网站时,他们什么也没说……
发布于 2009-03-04 20:43:46
正如Martin所说,这取决于提供商。
我认为MyOpenID不会使用AttributeExchange。他们确实做了sreg (简单注册),所以在你的请求中添加一个ClaimsRequest扩展,你会从一些提供商那里得到一个ClaimsResponse。
谷歌只提供AttributeExchange,并且只提供一个电子邮件地址。你的代码中唯一遗漏的一件事是,除非你在你的请求中将其标记为“必需”,否则Google甚至不会主动提供电子邮件地址。向AttributeRequest构造器添加一个",true“第二个参数,然后谷歌应该会亮起来,并给你用户的电子邮件地址。
这里有一些docs and samples of getting attributes。
发布于 2009-02-27 12:36:14
也许你没有做错什么-提供者可能只是不支持请求,或者选择不发送所请求的信息。
http://blog.nerdbank.net/2008/07/how-to-use-dotnetopenid-attribute.html“与所有OpenID扩展一样,仅发送带有扩展名的请求并不能保证提供程序会发回对该扩展名的响应。提供程序可能不支持该扩展名,也可能选择不发送任何响应。”
https://stackoverflow.com/questions/594548
复制相似问题