通过Oauth2进行的LinkedIn身份验证返回空结果(错误=access_denied)



我将我的ASP.NET MVC web应用程序从成员身份转移到了身份验证,从那以后我就不能再在LinkedIn上进行身份验证了。

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

对于领英,我正在使用Owin领英提供商:领英.NET API。我也没有成功地尝试关注Jerrie Pelser的这篇帖子。

应用程序调用执行ExecuteResult方法的ExternalLogin Action,并回调ExternalLoginCallback(在我允许访问应用程序之后)。正如我之前所说的,方法AuthenticationManager.GetExternalLoginInfoAsync()总是返回一个null的loginInfo。

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

行动!我差点忘了说领英正在返回URL,并返回一条通用错误消息:"GET/Account/ExternalLoginCallback?error=access_denied HTTP/1.1"

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

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);

外部登录

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");
}

领英回拨URI

http://localhost:3279/signin-linkedin

经过一些研究和访问NuGet包存储库,我发现了Owin.Security.Providers的预发布版本,它的工作效果很好。我只需要从软件包管理器控制台安装它,LinkedIn外部登录返回null的问题已经解决了。

Install-Package Owin.Security.Providers -Pre

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

相关内容

  • 没有找到相关文章

最新更新