C# ';符号模式';必须提供选项

C# ';符号模式';必须提供选项,c#,cookies,asp.net-core,asp.net-core-mvc,facebook-authentication,C#,Cookies,Asp.net Core,Asp.net Core Mvc,Facebook Authentication,我正在创建一个仅使用Facebook/Google身份验证的ASP.NET 5 MVC 6应用程序。我还尝试在不使用整个ASP.NET标识的情况下使用cookie中间件——本文如下: 因此,我从一个没有身份验证的空白应用程序开始,然后添加了Microsoft.AspNet.authentication.Cookies和Microsoft.AspNet.authentication.Facebook NuGet软件包,以便采用一种非常简约的方法,不包含任何我不需要的内容 我在Startup.cs

我正在创建一个仅使用Facebook/Google身份验证的ASP.NET 5 MVC 6应用程序。我还尝试在不使用整个ASP.NET标识的情况下使用cookie中间件——本文如下:

因此,我从一个没有身份验证的空白应用程序开始,然后添加了Microsoft.AspNet.authentication.Cookies和Microsoft.AspNet.authentication.Facebook NuGet软件包,以便采用一种非常简约的方法,不包含任何我不需要的内容

我在Startup.cs中的Configure中添加了以下代码,但出现了“必须提供signnscheme选项”错误。知道我错过了什么吗

app.UseCookieAuthentication(options =>
            {
                options.AuthenticationScheme = "MyCookieMiddlewareInstance";
                options.LoginPath = new PathString("/Accounts/Login/");
                options.AccessDeniedPath = new PathString("/Error/Unauthorized/");
                options.AutomaticAuthenticate = true;
                options.AutomaticChallenge = true;
            });

            app.UseFacebookAuthentication(options =>
            {
                options.AppId = "myFacebookAppIdGoesHere";
                options.AppSecret = "myFacebookAppSecretGoesHere";
            });

正如您看到的错误消息所示,您需要在您的Facebook中间件选项中设置
选项

app.UseFacebookAuthentication(options => {
    options.AppId = "myFacebookAppIdGoesHere";
    options.AppSecret = "myFacebookAppSecretGoesHere";

    // This value must correspond to the instance of the cookie
    // middleware used to create the authentication cookie.
    options.SignInScheme = "MyCookieMiddlewareInstance";
});
或者,您也可以从
ConfigureServices
全局设置它(它将配置每个身份验证中间件,这样您就不必设置
选项。Signenscheme
):


非常感谢。接下来的问题是:“MyCookieMidlewareInstance”是我的cookie的名字吗?我必须为用户创建一个临时cookie,以便在用户通过Facebook/Google认证后注册。然后我是否使用不同的cookie名称?如果是,我在哪里设置cookie名称?不,
AuthenticationScheme
对cookie名称没有影响,它是一个纯粹的内部标识符。要更改cookie名称,可以使用
CookieName
属性。如果尚未设置显式AuthenticationScheme,则为CookieAuthenticationDefaults.AuthenticationScheme
public void ConfigureServices(IServiceCollection services) {
    services.AddAuthentication(options => {
        // This value must correspond to the instance of the cookie
        // middleware used to create the authentication cookie.
        options.SignInScheme = "MyCookieMiddlewareInstance";
    });
}