I'm banging my head against a wall trying to get either AttributeExchange or SimpleRegistration working with the 3.2.0.9257 version of DotNetOpenAuth.
Here is what I've done:
- Downloaded the 3.2.0.9257 tag from GitHub
- Opened the DotNetOpenAuth visual studio solution
- Made changes to the OpenIdRelyingPartyMvc sample
The changes are all in the Authenticate method of UserController.
I replaced line 44,
return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();
with the following:
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();
(I also added the DotNetOpenAuth.OpenId.Extensions.AttributeExchange and DotNetOpenAuth.OpenId.Extensions.SimpleRegistration namespaces.)
Then, further down in the same method, after the "Stage 3 Authenticated", I try to get the responses:
var sr = response.GetExtension<ClaimsResponse>();
var ax = response.GetExtension<FetchResponse>();
However, those responses are always null. I've tried Google, Yahoo, and MyOpenID. In all cases, the authentication works correctly, but no SimpleRegistration or AttributeExchange data is returned.
What am I doing wrong?