Quais valores extras o Stack Exchange OpenID suporta?
-
11-12-2019 - |
Pergunta
Estou tentando conseguir o username / display name
, mas não tenho ideia de quais são os valores suportados.Eu tenho o email
e realname
, mas não sei o que retorna o username / display name
.
Existe uma documentação ou algo sobre isso?
Meu código atual:
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);
}
}
Solução
O que sua seta está apontando não é um nome de exibição (StackID não tem noção de nomes de exibição, seu login é seu endereço de e-mail), mas um "ID personalizado" opcional.
Por exemplo:
Me dá a vaidade do OpenID de https://openid.stackexchange.com/kevin.montrose .Este é apenas um alias mais fácil de lembrar para terceiros que exigem entrada manual de URLs OpenID.
Email e Nome Real/Nome Completo são os únicos atributos que StackID suporta consulta e retornarão ambos por meio de extensões SREG ou AX (como visto no código).