Quelles valeurs supplémentaires Stack Exchange OpenID prend-il en charge ?
-
11-12-2019 - |
Question
J'essaie d'obtenir le username / display name
, mais je n'ai aucune idée des valeurs prises en charge.j'ai eu le email
et realname
, mais je ne sais pas ce qui renvoie le username / display name
.
Y a-t-il une documentation ou quelque chose à ce sujet ?
Mon code actuel :
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);
}
}
La solution
Ce que votre flèche pointe vers ce n'est pas un nom d'affichage (StackID n'a aucune notion de noms d'affichage, votre identifiant est votre adresse e-mail) mais un "Vanity Id" facultatif.
Par exemple:
Cela me donne la vanité OpenID de https://openid.stackexchange.com/kevin.montrose .Il s'agit simplement d'un alias plus facile à retenir pour les parties de confiance qui nécessitent la saisie manuelle des URL OpenID.
L'e-mail et le nom réel/nom complet sont les seuls attributs pour lesquels StackID prend en charge les requêtes et renverront les deux via les extensions SREG ou AX (comme on le voit dans le code).