【问题标题】:DotNetOpenAuth get emailDotNetOpenAuth 获取电子邮件
【发布时间】:2009-10-21 18:38:02
【问题描述】:

我正在运行 dotnetopenauth 3.3.0.9283(夜间构建),它运行良好,解决了我之前的问题(DotNetOpenAuth get email and redirect problem

所以现在我只能从 gmail 获取用户的电子邮件!我已经尝试过 yahoo 和 myspace,但我总是得到“对象引用未设置为对象的实例”。我运行了构建附带的示例,ajaxlogin.aspx 和 loginProgrammatic.aspx 它们都给了我相同的错误消息。

这是我添加到示例中的唯一一行(并将电子邮件设置为必需)

var email = OpenIdAjaxTextBox1.AuthenticationResponse.GetExtension<ClaimsResponse>().Email;

【问题讨论】:

    标签: asp.net openid dotnetopenauth


    【解决方案1】:

    一行代码太多了。

    GetExtension&lt;T&gt;() 如果 Provider 实际上并未在响应中包含该扩展名,则将返回 null。因此,在取消引用之前,您必须始终检查它是否返回非空值。

    您从 Yahoo 获得了 null 回复,因为他们不支持泄露用户的额外信息(目前),除了一小部分 RP 的白名单。

    我不知道 MySpace,但我怀疑他们也不支持它。

    【讨论】:

    • 再次感谢 Andrew,我尝试了更多提供商,并设法从其中一些提供商那里收到了电子邮件。我还要求雅虎将我列入他们这样做的白名单。再次感谢:)
    • 我怎么知道某个提供商没有提供某些信息?
    • LuRsT,不可能提前确定。但是,如果您请求信息,您只需在响应中检查它,正如我在回答中所述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多