Based on @Jeff's answer, I created a class to handle OpenID Open Exchange.
Registration:
OAuthWebSecurity.RegisterClient(new StackExchangeOpenID());
Grade:
public class StackExchangeOpenID : OpenIdClient { public StackExchangeOpenID() : base("stackexchange", "https://openid.stackexchange.com") { } protected override Dictionary<string, string> GetExtraData(IAuthenticationResponse response) { FetchResponse fetchResponse = response.GetExtension<FetchResponse>(); if (fetchResponse != null) { var extraData = new Dictionary<string, string>(); extraData.Add("email", fetchResponse.GetAttributeValue(WellKnownAttributes.Contact.Email)); extraData.Add("name", fetchResponse.GetAttributeValue(WellKnownAttributes.Name.FullName)); return extraData; } return null; } protected override void OnBeforeSendingAuthenticationRequest(IAuthenticationRequest request) { var fetchRequest = new FetchRequest(); fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email); fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.FullName); request.AddExtension(fetchRequest); } }
Getting additional data:
var result = OAuthWebSecurity.VerifyAuthentication(); result.ExtraData["email"]; result.ExtraData["name"];
source share