2

我正在尝试获取username / display name,但我不知道支持的值是什么。我得到了emailand realname,但我不知道返回的是什么username / display name

在此处输入图像描述

是否有相关文档或其他内容?

我当前的代码:

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);
    }
}
4

1 回答 1

3

您的箭头指向的不是显示名称(StackID 没有显示名称的概念,您的登录名是您的电子邮件地址),而是可选的“Vanity Id”。

例如:

在此处输入图像描述

给了我https://openid.stackexchange.com/kevin.montrose的虚荣 OpenID 。对于需要手动输入 OpenID url 的依赖方来说,这只是一个更容易记住的别名。

电子邮件和真实姓名/全名是 StackID 支持查询的唯一属性,并将通过 SREG 或 AX 扩展名返回(如代码所示)。

于 2012-10-02T19:50:28.420 回答