Простая версия этого вопроса: Как узнать, аутентифицирован ли пользователь через Facebook после входа в систему с помощью идентификатора ASP.NET?Как узнать, зарегистрировался ли пользователь через Facebook
VS2013, ASP.NET SPA шаблона, ASP.NET Идентичность 2.2.1:
Я хотел бы знать, если пользователь идентифицирован через Facebook. Ранее мне позвонили по этому телефону:
ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);
внутри моего метода GetExternalLogin. Теперь, однако, он работает в первый раз, когда вызван из GetExternalLogin (возвращает объект, описывающий логин facebook), но после возвращения формы обратной передачи в Facebook он снова вызван из моего метода GetUserInfo() и возвращает значение null. Я выкопал в код, и нашел обижая строку: (. Значение обоих этих вещей является «LOCAL AUTHORITY» и нуль возвращается)
if (providerKeyClaim.Issuer == ClaimsIdentity.DefaultIssuer)
{
return null;
}
В том случае, когда он работает правильно, providerKeyClaim.Issuer == "Facebook". Может ли кто-нибудь объяснить, для чего эта проверка, и почему это условие выполняется, несмотря на вход в Facebook? Хотел бы я знать, когда это в последний раз работало для меня. Я обновил мою версию ASP.NET Identity, хотя я не уверен, что это сработало после.
Обновление: Похоже, во время вызова GetExternalLogin объект User.Identity был выпущен Facebook. Но для последующего вызова GetUserInfo это полностью отдельный локально созданный объект, созданный компонентами ASP.NET Identity.
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –