2012-09-29 40 views
2

我想獲得username/display name,但我不知道支持的值是什麼。我得到了emailrealname,但我不知道什麼返回username/display nameStack Exchange OpenID支持哪些額外值?

enter image description here

是否有關於這個文檔還是什麼?

我當前的代碼:

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); 
    } 
} 
+0

這兩條線是否因爲您嘗試過而被註釋掉,而且它們不起作用? – BoltClock

+0

@BoltClock是的。它返回'null'。 – BrunoLM

回答

3

什麼是你的箭頭指向自己是不是顯示名稱(StackID沒有顯示名字的概念,你的登錄名是您的電子郵件地址),但可選的「名利場標識」。

例如:

enter image description here

給我的https://openid.stackexchange.com/kevin.montrose虛榮的OpenID。對於需要手動輸入OpenID URL的依賴方來說,這只是一個更容易記住的別名。

電子郵件和實名/全名是StackID支持查詢的唯一屬性,並將通過SREG或AX擴展(as seen in the code)返回。