Я слежу за учебником по webapi oauth login здесь;WebApi 2 OAuth External Login Access Token Issue
Это все проходит гладко, но я с трудом с извлекая маркер, посланный от внешнего поставщика (в данном тестовом случае Google).
Таким образом, после того, как пользователь аутентифицирует и подтверждает логин, конечная точка «ExternalLogin» во второй раз на webapi с данными аутентификации.
в этом методе вызывается следующий, чтобы извлечь все данные к классу
ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);
Его здесь, что это, кажется, падения. Как при вызове метода FromIdentity;
public static ExternalLoginData FromIdentity(ClaimsIdentity identity)
{
if (identity == null)
{
return null;
}
Claim providerKeyClaim = identity.FindFirst(ClaimTypes.NameIdentifier);
if (providerKeyClaim == null || String.IsNullOrEmpty(providerKeyClaim.Issuer) || String.IsNullOrEmpty(providerKeyClaim.Value))
{
return null;
}
if (providerKeyClaim.Issuer == ClaimsIdentity.DefaultIssuer)
{
return null;
}
return new ExternalLoginData
{
LoginProvider = providerKeyClaim.Issuer,
ProviderKey = providerKeyClaim.Value,
UserName = identity.FindFirstValue(ClaimTypes.Name),
ExternalAccessToken = identity.FindFirstValue("ExternalAccessToken"),
};
}
линия;
ExternalAccessToken = identity.FindFirstValue("ExternalAccessToken")
возвращается как null? Я не вижу, чтобы этот знак был возвращен в любой из претензий?
Таким образом, в классе «GoogleAuthProvider», который реализует «IGoogleOAuth2AuthenticationProvider», и если вы послали брейк-поинт на аутентичном случае, вы были в состоянии проверить значение «context.AccessToken»? Если не какая версия MS.Owin.Security вы используете? Можете ли вы попытаться отступить и использовать те же версии, что и в этом посте, если они работают, попытайтесь обновить пакеты и контролировать результаты. –
Привет, Тэйзер, спасибо за ответ. Да, похоже, что он упал до плохой установки в пакетах nuget. Спасибо, что указали, где был назначен токен. Метод «Authenticated» не стрелял и не устанавливал токен внешнего доступа. Я выполнил переустановку пакета nuget со следующей версией; Клиентская библиотека Google.Apis.Oauth2.v2 1.10.0.1000 –