Да, об этом спрашивали и отвечали много раз. Google поддерживает AX. Но он игнорирует любые атрибуты, помеченные как «необязательные». Так что если вы хотите адрес электронной почты, вы должны сказать, что адрес электронной почты является обязательным атрибутом.
Расширение ClaimsResponse
, которое вы проверяете, не AX - это простая регистрация. Но если у вас включено поведение AXFetchAsSregTransform (настоятельно рекомендуется), тогда оно позволяет вам использовать исключительно ClaimsRequest
и ClaimsResponse
, и DotNetOpenAuth автоматически переводит в и из AX за кулисами ,
В качестве альтернативы, вы можете использовать FetchReqest
и FetchResponse
, чтобы говорить AX напрямую с Google.
Но (и я не могу забить это достаточно сильно), не используйте адрес электронной почты в качестве уникального идентификатора пользователя !!! Вместо этого используйте строку IAuthenticationResponse.ClaimedIdentifier
как уникальный идентификатор. Адрес электронной почты обычно следует рассматривать как полезный совет, который можно использовать для предварительного заполнения регистрационной формы. Вы даже не должны доверять тому, что получаемый вами адрес электронной почты действительно находится под контролем пользователя (это одна из причин, почему он не должен рассматриваться как их уникальный идентификатор), поскольку поставщик может лгать вам. Google и Yahoo - два провайдера, которые обещают (если вы решите им доверять), что адреса электронной почты были проверены, поэтому вы можете при желании пропустить шаг проверки электронной почты для пользователей.