当前位置:  开发笔记 > 后端 > 正文

无法从DotNetOpenId响应中获取属性

如何解决《无法从DotNetOpenId响应中获取属性》经验,为你挑选了1个好方法。

我试图弄清楚如何通过open id验证后获取用户信息.如果我在呼叫时提供ClaimsRequest或FetchRequest并不重要

response.GetExtension

//Or

response.GetExtension

//Or

response.GetUntrustedExtension

// OR

response.GetUntrustedExtension

我总是得到一个空引用.我正在添加信息,就像我看到的所有示例一样:

request.AddExtension(new ClaimsRequest{ Email = DemandLevel.Require });

// Or

var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
request.AddExtension(fetch);

知道我做错了什么吗?

更新

添加安德鲁建议的配置信息让我成为了那里的一部分.我终于得到一个ClaimsResponse,response.GetUntrustedExtensionresponse.GetExtension仍然返回null.返回的ClaimsResponse实际上并不包含我请求的任何数据.这是请求:

var request = openId.CreateRequest(Request.Form["openid_identifier"]);
request.AddExtension(new ClaimsRequest
    {
        BirthDate = DemandLevel.Request,
        Country = DemandLevel.Request,
        Email = DemandLevel.Require,
        FullName = DemandLevel.Request,
        Gender = DemandLevel.Request,
        Language = DemandLevel.Request,
        Nickname = DemandLevel.Request,
        PostalCode = DemandLevel.Request,
        TimeZone = DemandLevel.Request 
      });

      return request.RedirectingResponse.AsActionResult();

这是我的配置

  
    
    
  
  
    
      
        
        
          
        
      
    
    
      
        
          
          
        
      
    

我正在运行v3.2.0.9177



1> Andrew Arnot..:

您正在测试的提供商很可能不支持这些扩展.或者,如果它是谷歌,它只回答一次问题(除非在登录时你小心不要记住我记得).

现在使用DotNetOpenAuth v3.2,发送扩展的最佳方式可能是使用新的属性扩展"行为".它将自动使用sreg和/或AX(最多三种不同的AX格式),具体取决于提供商,以便在提供商支持任何这些扩展时最大限度地获得有用结果的机会.

将此位粘贴在web.config文件中,完整配置wiki页面中的建议.


    

然后使用ClaimsRequest/ ClaimsResponse(sreg)代替AX',FetchRequest以便行为可以完成其工作.

既然你提到你正在对myopenid.com进行测试,那么当你测试'localhost'上的RP时,我也会忽略它们似乎已经关闭了扩展支持.您的RP显然必须是公开的,甚至可以发现(根据RP发现的OpenID 2.0规则),以便尊重属性请求.这可能是你遇到的.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有