После настройки проекта Web API 2 с Bearer Token OAuth все работало нормально.Мне удается получить токен через / Token.Когда я добавил аутентификацию Facebook, хотя он начал запрашивать следующее: «Значение по умолчанию для SignInAsAuthenticationType
не найдено в IAppBuilder
Свойствах».ошибка.Я заверил, что добавил для аутентификации токена и Facebook тип SignInAsAuthentication
, и это продолжается.Где я не прав?
public void ConfigureAuth(IAppBuilder app)
{
_dataProtectionProvider = app.GetDataProtectionProvider();
IUnityContainer container = UnityBootstrapper.Container;
container.RegisterInstance(DataProtectionProvider);
BootstrapperUnityResolver dependencyResolver = new BootstrapperUnityResolver(container);
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext(() => ApplicationDbContext.Create());
app.CreatePerOwinContext(() => (ApplicationUserManager)dependencyResolver.GetService(typeof(ApplicationUserManager)));
app.CreatePerOwinContext(() => (ApplicationSignInManager)dependencyResolver.GetService(typeof(ApplicationSignInManager)));
PublicClientId = "self";
OAuthServerOptions = new OAuthAuthorizationServerOptions
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/Token"),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(30)
};
app.SetDefaultSignInAsAuthenticationType(OAuthDefaults.AuthenticationType);
//app.UseOAuthBearerTokens(OAuthServerOptions);
app.UseOAuthAuthorizationServer(OAuthServerOptions);
OAuthAuthenticationOptions = new OAuthBearerAuthenticationOptions
{
Provider = new OAuthBearerAuthenticationProvider()
};
app.UseOAuthBearerAuthentication(OAuthAuthenticationOptions);
var facebookAuthenticationOptions = new FacebookAuthenticationOptions();
facebookAuthenticationOptions.AppId = "***";
facebookAuthenticationOptions.AppSecret = "*****";
facebookAuthenticationOptions.Provider = new FacebookAuthenticationProvider()
{
OnAuthenticated = async ctx =>
{
var token = ctx.AccessToken;
var id = ctx.Id;
var email = ctx.User["email"];
ctx.Identity.AddClaim(new Claim("urn:myWebSite:AuthorityId", "1", ClaimValueTypes.String, "Facebook"));
if (id != null)
ctx.Identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, id.ToString(), ClaimValueTypes.String, "Facebook"));
if (email != null)
ctx.Identity.AddClaim(new Claim(ClaimTypes.Email, email.ToString(), ClaimValueTypes.String, "Facebook"));
ctx.Identity.AddClaim(new Claim("fb.token", token));
}
};
facebookAuthenticationOptions.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalBearer;
app.UseFacebookAuthentication(facebookAuthenticationOptions);
}