Получить данные GMail через DotNetOpenId - PullRequest
5 голосов
/ 07 апреля 2009

Я пытаюсь войти с помощью dotNetOpenId в учетные записи GMail. Это работает, но я не могу получить какие-либо претензии. Я знаю, что мог бы также получить адреса электронной почты или имена пользователей, но никакие претензии не возвращаются, доступен только ClaimedIdentifier . Кто-нибудь знает, как получить эти данные из учетных записей Gmail? Если бы вы могли предоставить мне пример конфигурации ClaimsRequest, я был бы признателен.

Спасибо

1 Ответ

2 голосов
/ 10 апреля 2009
// 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 настроил. К сожалению, другие провайдеры, которых используют люди, ведут себя по-разному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...