Ste*_*eve 4 oauth-2.0 facebook-oauth asp.net-core-mvc asp.net-core
我有一个非常简单的 Web 应用程序,其中包含我添加了 Facebook OAuth 提供程序和 Sqlite 数据库的默认 ASP.NET Core Web 应用程序。
让它在本地运行没有任何问题,但是当我部署到 Azure 时,我开始出现错误。
过了一会儿,我遇到了一个错误,指出:
An error occurred while starting the application
Run Code Online (Sandbox Code Playgroud)
在互联网上搜索了几个小时并尝试了各种方法来实际查看错误后,我在这里偶然发现了答案。
现在我可以看到错误详细信息:
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()
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我可以在网上找到的所有文档都说你应该只需要 Facebook 的 AppId 和 AppSecret。我按照 Microsoft指南进行了配置。这是 Startup.cs 的相关部分:
app.UseFacebookAuthentication(new FacebookOptions()
{
AppId = Configuration["Authentication:Facebook:AppId"],
AppSecret = Configuration["Authentication:Facebook:AppSecret"]
});
Run Code Online (Sandbox Code Playgroud)
我找到了一些示例,显示 ClientId 用于 Google 和 Microsoft 提供商,但没有用于 Facebook。(这是一个很大的页面,但只需搜索“ClientId”)我尝试添加 ClientId,但遇到相同的错误。
您收到此错误是因为Authentication:Facebook:AppId在您的Configuration对象中找不到密钥。在典型的 ASP.NET Core 应用程序中,该对象是从appsettings.json文件中填充的。
你是说它在本地工作,而不是在 Azure 上,这可能意味着你在 中配置了你的 Facebook 身份验证appsettings.Development.json,它在你的 Dev box 上使用,但在部署到 Azure 时不使用。
总而言之,您的appsettings.json文件应如下所示:
{
"Authentication": {
"Facebook": {
"Id": "1943349465943333",
"AppSecret": "4bbc86c773aa1df91d52b421e129433"
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以查看https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration了解更多信息。
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |