2009-10-21 2 views
4

Я бегу dotnetopenauth 3.3.0.9283 (ночные сборки), он прекрасно работает, и это решило мою предыдущую задачу (DotNetOpenAuth get email and redirect problem)DotNetOpenAuth получить по электронной почте

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

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

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

ответ

7

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

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

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

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

+0

Еще раз спасибо Andrew, я попробовал еще несколько провайдеров, и мне удалось получить электронную почту от некоторых из них. И я также попросил yahoo поместить меня в белый список, чтобы они это сделали. Еще раз спасибо :) – Murre

+0

Как я могу узнать, что определенный поставщик не предоставляет определенную информацию? – LuRsT

+1

LuRsT, невозможно заранее знать заранее. Но если вы запросите информацию, которую вы просто проверяете в ответ, как я заявляю в своем ответе. –