Welche zusätzlichen Werte unterstützt Stack Exchange OpenID?
-
11-12-2019 - |
Frage
Ich versuche das zu bekommen username / display name
, aber ich habe keine Ahnung, was die unterstützten Werte sind.Ich habe die email
und realname
, aber ich weiß nicht, was das zurückgibt username / display name
.
Gibt es eine Dokumentation oder etwas dazu?
Mein aktueller Code:
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);
}
}
Lösung
Worauf Ihr Pfeil zeigt, ist kein Anzeigename (StackID hat keine Ahnung von Anzeigenamen, Ihr Login ist Ihre E-Mail-Adresse), sondern eine optionale "Vanity ID".
Beispielsweise:
Gibt mir die Vanity OpenID von https://openid.stackexchange.com/kevin.montrose .Dies ist nur ein leichter zu merkender Alias für vertrauende Parteien, die eine manuelle Eingabe von OpenID-URLs erfordern.
E-Mail und richtiger Name / vollständiger Name sind die einzigen Attribute, nach denen StackID Abfragen unterstützt, und geben beide entweder über SREG- oder AX-Erweiterungen zurück (wie im Code zu sehen).