通过Oauth2进行LinkedIn身份验证返回null结果(error = access_denied)

时间:2015-04-07 16:52:15

标签: asp.net-mvc authentication oauth-2.0 linkedin asp.net-identity

我将ASP.NET MVC Web应用程序从成员身份转移到身份验证,因此我无法在LinkedIn上进行身份验证。

Facebook身份验证仍然正常,但LinkedIn总是在GetExternalLoginInfo调用后返回null loginInfo。

对于我使用Owin LinkedIn提供商的LinkedIn:LinkedIn APIs for .NET。我也试图关注this post from Jerrie Pelser

Application调用执行ExecuteResult方法的ExternalLogin Action并回调ExternalLoginCallback(在我允许访问应用程序之后)。如前所述,方法AuthenticationManager.GetExternalLoginInfoAsync()始终返回null loginInfo。

我检查了LinkedIn中的应用程序设置,一切似乎都没问题。

行动!我差点忘了说LinkedIn正在返回带有一般错误消息的URL:" GET / Account / ExternalLoginCallback?error = access_denied HTTP / 1.1"

我可以使用DotNetOpenAuth.Clients(托管的github)进行身份验证,但我只想使用身份。

Startup.Auth.cs

var linkedInOptions = new LinkedInAuthenticationOptions();
        linkedInOptions.ClientId = "Xxxxx";
        linkedInOptions.ClientSecret = "Yyyyyyy";

        linkedInOptions.Scope.Add("r_fullprofile");

        linkedInOptions.Provider = new LinkedInAuthenticationProvider()
        {
            OnAuthenticated = async context =>
            {
                context.Identity.AddClaim(new System.Security.Claims.Claim("LinkedIn_AccessToken", context.AccessToken));
            }
        };

        linkedInOptions.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;

        app.UseLinkedInAuthentication(linkedInOptions);

ExternalLogin

public ActionResult ExternalLogin(string provider, string returnUrl)
    {
        // Request a redirect to the external login provider
        return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
    }

回复行动

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
    return RedirectToAction("Login");
}

LinkedIn CallBack URI

http://localhost:3279/signin-linkedin

1 个答案:

答案 0 :(得分:5)

经过一些研究和访问NuGet包存储库后,我发现prerelease version of Owin.Security.Providers就像一个魅力。我只需要从包管理器控制台安装它,并且LinkedIn外部登录的null返回问题已经消失。

Install-Package Owin.Security.Providers -Pre

警告: 请注意,使用预发布包可能会导致意外问题

相关问题