DotNetOpenAuth получить электронную почту - PullRequest
4 голосов
/ 21 октября 2009

Я использую dotnetopenauth 3.3.0.9283 (ночная сборка), он отлично работает и решил мою предыдущую проблему ( DotNetOpenAuth: получение электронной почты и проблема перенаправления )

Так что теперь я могу получать электронную почту пользователей только через gmail! Я пробовал Yahoo и MySpace, но я всегда получаю «Ссылка на объект не установлена ​​на экземпляр объекта». Я запустил пример, поставляемый со сборкой, ajaxlogin.aspx и loginProgrammatic.aspx, они оба выдают мне одно и то же сообщение об ошибке.

это единственная строка, которую я добавил к образцу (а также установил адрес электронной почты на обязательный)

var email = OpenIdAjaxTextBox1.AuthenticationResponse.GetExtension<ClaimsResponse>().Email;

1 Ответ

7 голосов
/ 22 октября 2009

У вас слишком много кода в одной строке.

GetExtension<T>() вернет ноль, если провайдер фактически не включает это расширение в ответ. Поэтому вы всегда должны проверять, что оно возвращает ненулевое значение, прежде чем разыменовывать его.

Вы получаете нулевое значение от Yahoo, потому что они не поддерживают выдачу дополнительной информации своих пользователей (пока), за исключением небольшого белого списка RP.

Я не знаю о MySpace, но подозреваю, что они просто не поддерживают его.

...