在ASP.NET Core 2.0中设置社交身份验证

时间:2017-08-18 23:49:48

标签: asp.net-core facebook-authentication asp.net-authentication

我在不使用Identity的情况下在ASP.NET Core 2.0应用程序中设置社交登录。

我只想通过Facebook,Google和LinkedIn对用户进行身份验证并接收他们的信息。我自己处理用户信息。

这是我到目前为止所做的,它给了我以下错误:

  

没有配置身份验证处理程序来处理该方案:facebook

这是Startup.cs文件的更改:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            // Added these lines for cookie and Facebook authentication
            services.AddAuthentication("MyCookieAuthenticationScheme")
                .AddCookie(options => {
                    options.AccessDeniedPath = "/Account/Forbidden/";
                    options.LoginPath = "/Account/Login/";
                })
                .AddFacebook(facebookOptions =>
                {
                    facebookOptions.AppId = "1234567890";
                    facebookOptions.AppSecret = "1234567890";
                });
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            // Added this line
            app.UseAuthentication();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

然后我有这个动作方法,我发送给用户以确定我们用于认证的提供者,例如Facebook,谷歌等。此代码来自我的ASP.NET Core 1.1应用程序,它运行正常。

    [AllowAnonymous]
    public async Task ExternalLogin(string provider, string returnUrl)
    {
        var properties = new AuthenticationProperties
        {
            RedirectUri = "Login/Callback"
        };

        // Add returnUrl to properties -- if applicable
        if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
            properties.Items.Add("returnUrl", returnUrl);

        // The ASP.NET Core 1.1 version of this line was
        // await HttpContext.Authentication.ChallengeAsync(provider, properties);
        await HttpContext.ChallengeAsync(provider, properties);

        return;
    }

当我点击ChallangeAsync行时收到错误消息。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

没有配置身份验证处理程序来处理该方案:facebook

方案名称区分大小写。使用provider=Facebook代替provider=facebook,它应该有效。