¿Qué valores adicionales admite Stack Exchange OpenID?
-
11-12-2019 - |
Pregunta
Estoy tratando de conseguir el username / display name
, pero no tengo idea de cuáles son los valores admitidos.tengo el email
y realname
, pero no sé qué devuelve el username / display name
.
¿Existe alguna documentación o algo sobre esto?
Mi código actual:
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));
// returned value: null
//extraData.Add("username", fetchResponse.GetAttributeValue(WellKnownAttributes.Name.Alias));
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);
// returned value: null
//fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.Alias);
request.AddExtension(fetchRequest);
}
}
Solución
Lo que apunta su flecha no es un nombre para mostrar (StackID no tiene noción de nombres para mostrar, su inicio de sesión es su dirección de correo electrónico) sino un "ID personalizado" opcional.
Por ejemplo:
Me da el vanity OpenID de https://openid.stackexchange.com/kevin.montrose .Este es simplemente un alias más fácil de recordar para las partes de confianza que requieren la entrada manual de URL de OpenID.
Correo electrónico y Nombre real/Nombre completo son los únicos atributos que StackID admite consultas y devolverá ambos a través de extensiones SREG o AX (como se ve en el código).