ما هي القيم الإضافية التي يدعمها Stack Exchange OpenID؟
-
11-12-2019 - |
سؤال
أحاول الحصول على username / display name
, ولكن ليس لدي أي فكرة عن القيم المدعومة.حصلت على email
و 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);
}
}
المحلول
ما يشير إليه سهمك ليس اسم عرض (ليس لدى StackID فكرة عن أسماء العرض، وتسجيل الدخول الخاص بك هو عنوان بريدك الإلكتروني) ولكنه "معرف مخصص" اختياري.
على سبيل المثال:
يعطيني OpenID الغرور https://openid.stackexchange.com/kevin.montrose .يعد هذا مجرد اسم مستعار يسهل تذكره للأطراف المعتمدة التي تتطلب الإدخال اليدوي لعناوين URL لـ OpenID.
البريد الإلكتروني والاسم الحقيقي/الاسم الكامل هما السمات الوحيدة التي يدعمها StackID للاستعلام عنها، وسيُرجع كليهما عبر امتدادات SREG أو AX (كما رأينا في التعليمات البرمجية).