// Either you're creating this already or you can get to it in
// the LoggingIn event of the control you're using.
IAuthenticationRequest request;
// Add the AX request that says Email address is required.
var fetch = new FetchRequest();
fetch.Attributes.Add(
new AttributeRequest(WellKnownAttributes.Contact.Email, true));
request.AddExtension(fetch);
Затем Google аутентифицирует пользователя и возвращает адрес электронной почты, который вы можете получить с помощью:
var fetch = openid.Response.GetExtension<FetchResponse>();
if (fetch != null)
{
IList<string> emailAddresses = fetch.GetAttribute(
WellKnownAttributes.Contact.Email).Values;
string email = emailAddresses.Count > 0 ? emailAddresses[0] : null;
}
Вы можете посмотреть в моем блоге на эту тему для получения дополнительной информации. Здесь важно отметить, что Google сообщит вам только адрес электронной почты пользователя, если вы отметите его как требуется (как я сделал в приведенном выше фрагменте). Но это также означает, что если пользователь не хочет делиться своим адресом электронной почты, он вообще не может войти в систему. Извините, так Google настроил. К сожалению, другие провайдеры, которых используют люди, ведут себя по-разному.