【问题标题】:Request email address from OpenID provider向 OpenID 提供商请求电子邮件地址
【发布时间】:2009-02-27 12:27:04
【问题描述】:

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

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

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

我做错了什么?

谢谢!

编辑:

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

【问题讨论】:

    标签: openid dotnetopenauth


    【解决方案1】:

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

    我认为,MyOpenID 不执行 AttributeExchange。不过,他们会进行 sreg(简单注册),因此在您的请求中添加 ClaimsRequest 扩展名,您会从一些提供商那里获得 ClaimsResponse

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

    这里有一些docs and samples of getting attributes

    【讨论】:

    • Andrew,您能否使用一些示例 C# sreg 代码或指向博客文章/网站教程的链接以及一些显示的代码来编辑此回复?
    • Pure.Krome,我已按要求添加了链接。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      相关资源
      最近更新 更多