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.

enter image description here

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);
    }
}
Foi útil?

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:

enter image description here

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top