1

Identityを使用せずにASP.NET Core 2.0アプリケーションでソーシャルログインを設定しています。ASP.NET Core 2.0でソーシャル認証を設定する

Facebook、Google、LinkedInでユーザーを認証し、その情報を受け取るだけです。私はユーザー情報を自分で保存しています。ここで

は私に次のエラーを与えているその私がこれまで何をやったかです:

No authentication handler is configured to handle the scheme: 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、Googleなどがあります。このコードは、うまく動作している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行にヒットしたときにエラーメッセージが表示されます。

私は間違っていますか?

+2

スキーム名では大文字と小文字が区別されます。あなたはFacebookの代わりにFacebookで試してみることができますか? – Pinpoint

+0

あなたが参照しているコードの部分がわかりません。どうぞお分かりですか?ありがとう。 – Sam

+0

ちょうどあなたが話していたことを理解して、あなたはまさに正しいです!!!!!それは 'Facebookは' facebookではない – Sam

答えて

1

No authentication handler is configured to handle the scheme: facebook

スキーム名では大文字と小文字が区別されます。 provider=facebookの代わりにprovider=Facebookを使用するとうまくいくはずです。

+0

私は 'LinkedIn'認証を追加しようとしています。そのための計画は何でしょうか?私は 'LinkedIn'を試しましたが、もう一度、' no handler is configured'というエラーが出ます。 – Sam

+0

気軽に別の質問を開きます(ここにリンクを投稿してください)。答えは複雑ではありませんが、2.0に移行するときに、いつか同様の問題に直面する人は多いでしょう。 – Pinpoint

+0

良い点!ここに私の新しい質問へのリンクがあります:https://stackoverflow.com/questions/45777071/setting-up-linkedin-oauth-authentication-in-asp-net-core-2-0 – Sam

関連する問題