2017-08-19 177 views
3

我想LinkedIn認證添加到我的ASP.NET 2.0的核心應用程序,但得到以下錯誤:設置LinkedIn/OAuth認證在ASP.NET核2.0

No authentication handler is configured to handle the scheme: LinkedIn

下面是如何添加LinkedIn /在Startup.csConfigureServices OAuth認證:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) 
    .AddCookie("internal_cookie", options => { 
     options.AccessDeniedPath = "/Account/Forbidden/"; 
     options.LoginPath = "/Account/Login"; 
    }) 
    .AddCookie("external_cookie") 
    .AddOAuth("LinkedIn", options => { 

     options.SignInScheme = "external_cookie"; 
     options.ClientId = "1234567890"; 
     options.ClientSecret = "1234567890"; 
     options.CallbackPath = "/linkedin-callback"; 

     options.AuthorizationEndpoint = "https://www.linkedin.com/oauth/v2/authorization"; 
     options.TokenEndpoint = "https://www.linkedin.com/oauth/v2/accessToken"; 
     options.UserInformationEndpoint = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url,picture-urls::(original))"; 

     options.Scope.Add("r_basicprofile"); 
     options.Scope.Add("r_emailaddress"); 

     options.Events = new OAuthEvents 
     { 
      OnCreatingTicket = OnCreatingTicketLinkedInCallBack, 
      OnTicketReceived = OnTicketReceivedCallback 
     }; 
    }) 
    .AddFacebook(options => 
    { 
      options.AppId = "1234567980"; 
      options.AppSecret = "1234567890"; 
      options.Events = new OAuthEvents 
      { 
      OnCreatingTicket = OnCreatingTicketFacebookCallback, 
      OnTicketReceived = OnTicketReceivedCallback 
      }; 
    }) 
    .AddGoogle(options => 
    { 
      options.ClientId = "1234567890"; 
      options.ClientSecret = "1234567890"; 
      options.CallbackPath = "/google-callback"; 
      options.Events = new OAuthEvents 
      { 
       OnCreatingTicket = OnCreatingTicketGoogleCallback, 
       OnTicketReceived = OnTicketReceivedCallback 
      }; 
}); 

哪裏是我的錯誤?

UPDATE: 進行更正建議,我現在得到以下錯誤後:

No IAuthenticationSignInHandler is configured to handle sign in for the scheme: social_login

回答

3

你夾雜了與登錄方案,該方案OAuthHandler您的自定義LinkedIn程序登記相關的認證方案將最終調用來堅持身份(通常是一個cookie處理程序實例)。

修復您的註冊指定LinkedIn的方案和social_login作爲登錄方案(假設你的cookie處理程序確實命名social_login),它應該工作:

services.AddAuthentication() 
    .AddCookie("social_login") 
    .AddOAuth("LinkedIn", options => 
    { 
     options.SignInScheme = "social_login"; 

     // ... 
    }); 

注意:您可以刪除SignInScheme分配如果social_login是默認登錄方案(即如果調用services.AddAuthentication("social_login")services.AddAuthentication(options => options.DefaultSignInScheme = "social_login")

services.AddAuthentication("social_login") 
    .AddCookie("social_login") 
    .AddOAuth("LinkedIn", options => 
    { 
     // ... 
    }); 
+0

我剛剛發佈了一個更新到我原來的PO ST。我真的很高興這已經出現了。我想使用不同的方案,這樣我的內部生產的cookie將具有不同於我從社交認證提供商那裏獲得的「名稱」。我只是不知道如何處理我收到的新錯誤。 – Sam

+0

您的Cookie處理程序實例是否名爲'social_login'?發佈整個代碼會有所幫助。 – Pinpoint

+0

更新了原始文章中的整個代碼部分,向您展示了我的整個身份驗證配置部分。 – Sam