Ich habe eine sehr einfache Web-Anwendung, die aus der Standard ASP.NET Core Web-Anwendung, die ich den Facebook-OAuth-Provider und eine SQLite-Datenbank hinzugefügt haben.ASP.NET Core Web-Anwendung mit OAuth Facebook-Provider Fehler
Es funktionierte lokal ohne Probleme, aber wenn ich nach Azure bereitstellen, fing ich an, Fehler zu bekommen.
Nach einer Weile bekam ich auf einen Fehler, der besagt:
An error occurred while starting the application
Nachdem das Internet für ein paar Stunden suchen und verschiedene Möglichkeiten, tatsächlich versucht, den Fehler zu sehen, stieß ich auf die Antwort here.
Jetzt kann ich die Fehlerdetails sehen:
ArgumentException: The 'ClientId' option must be provided.
Microsoft.AspNetCore.Authentication.OAuth.OAuthMiddleware..ctor(RequestDelegate next, IDataProtectionProvider dataProtectionProvider, ILoggerFactory loggerFactory, UrlEncoder encoder, IOptions<SharedAuthenticationOptions> sharedOptions, IOptions<TOptions> options)
Microsoft.AspNetCore.Authentication.Facebook.FacebookMiddleware..ctor(RequestDelegate next, IDataProtectionProvider dataProtectionProvider, ILoggerFactory loggerFactory, UrlEncoder encoder, IOptions<SharedAuthenticationOptions> sharedOptions, IOptions<FacebookOptions> options)
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
Microsoft.Extensions.Internal.ActivatorUtilities+ConstructorMatcher.CreateInstance(IServiceProvider provider)
Microsoft.Extensions.Internal.ActivatorUtilities.CreateInstance(IServiceProvider provider, Type instanceType, Object[] parameters)
Microsoft.AspNetCore.Builder.UseMiddlewareExtensions+<>c__DisplayClass3_0.<UseMiddleware>b__0(RequestDelegate next)
Microsoft.AspNetCore.Builder.Internal.ApplicationBuilder.Build()
Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
Das ist seltsam, weil alle die Dokumentation ich online finden kann, sagt Sie nur AppId und AppSecret für Facebook benötigen sollten. Ich folgte dem Microsoft guide, um diese Konfiguration zu erhalten. Hier ist das entsprechende Bit von Startup.cs:
app.UseFacebookAuthentication(new FacebookOptions()
{
AppId = Configuration["Authentication:Facebook:AppId"],
AppSecret = Configuration["Authentication:Facebook:AppSecret"]
});
I examples zeigend ClientId verwendet wird für die Google und Microsoft-Provider aber nicht Facebook gefunden haben. (Es ist eine große Seite, aber suchen Sie einfach nach 'ClientId') Ich habe versucht, ClientId hinzuzufügen, aber bekomme nur den gleichen Fehler.
Es wird die Client-ID angegeben, da dies der App-ID in der Basisklasse und im Protokoll entspricht. Facebook verwendet aus irgendeinem Grund einen nicht standardmäßigen Namen in ihren Dokumenten. Sie könnten einen Fehler für eine spezifischere Fehlermeldung einreichen. – Tratcher