我正试图让AttributeExchange或SimpleRegistration与3.2.0.9257 版本的 DotNetOpenAuth 一起工作。
这是我所做的:
- 从 GitHub 下载 3.2.0.9257 标签
- 打开 DotNetOpenAuth 视觉工作室解决方案
- 对 OpenIdRelyingPartyMvc 示例进行了更改
更改都在 UserController 的 Authenticate 方法中。
我替换了第 44 行,
return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();
具有以下内容:
var request = openid.CreateRequest(Request.Form["openid_identifier"]);
// Add SimpleRegistration requests for Email and FullName
var sr = new ClaimsRequest();
sr.Email = DemandLevel.Request;
sr.FullName = DemandLevel.Request;
request.AddExtension(sr);
// Add AttributeExchange requests for Email and FullName
var ax = new FetchRequest();
ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Contact.Email));
ax.Attributes.Add(new AttributeRequest(WellKnownAttributes.Name.FullName));
request.AddExtension(ax);
return request.RedirectingResponse.AsActionResult();
(我还添加了 DotNetOpenAuth.OpenId.Extensions.AttributeExchange 和 DotNetOpenAuth.OpenId.Extensions.SimpleRegistration 命名空间。)
然后,以同样的方法,在“第 3 阶段认证”之后,我尝试得到响应:
var sr = response.GetExtension<ClaimsResponse>();
var ax = response.GetExtension<FetchResponse>();
但是,这些响应始终为空。我试过 Google、Yahoo 和 MyOpenID。在所有情况下,身份验证都能正常工作,但不会返回 SimpleRegistration 或 AttributeExchange 数据。
我究竟做错了什么?