无法获取领英授权码

时间:2018-12-16 20:30:04

标签: oauth-2.0 linkedin

我正在构建一个用于在LinkedIn上发布帖子的应用程序。我正在使用Visual Studio 2017(asp.net mvc c#)。 我已经在LinkedIn中创建了具有客户端ID和客户端密钥的应用程序。 我还在Visual Studio中的应用程序中创建了一个异步函数GetCode()。

此函数向此网址发出请求: 字符串url =“ https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=kjahldj9384&state=DCEEFWKDHIUs5dffef424&redirect_uri=http://localhost:51272/”;

当我运行应用程序并调用此函数时,我被重定向到LinkedIn身份验证页面进行登录。但是,当我输入LinkedIn登录凭据并点击登录时,它将带我到以下页面:https://www.linkedin.com/uas/login-submit,其中显示错误消息:

请求错误 很抱歉,您的请求有问题。请确保您已启用Cookie,然后重试。

或点击此链接返回首页。 这是我的GetCode函数:

        //Get LinkedIn Code
    [HttpGet]
    [Route("api/LinkedIn/GetCode")]
    public async Task<HttpResponseMessage> GetCode()
    {
        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Content-Type", "application/x-www-form-urlencoded");

     string url = "https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=54565kggfh&state=DCEEFW55754FD5dffef424&redirect_uri=http://localhost:57313/";

            HttpResponseMessage apiResponseMsg = await client.GetAsync(new Uri(url));

            return apiResponseMsg;
        }
    }

我在做错什么吗?

1 个答案:

答案 0 :(得分:0)

首先,请确保将您的redirect_uri添加到Linkedin开发人员门户中的OAuth 2.0设置(在“身份验证”标签下)。如果不是问题,请尝试以下操作。

如果您构建相同的URL,然后将页面重定向到该URL,而不是使用响应消息,则应使用代码作为查询参数(http://localhost:60137/?code=xxxxxxxxxxxxx)将其发送回您的网站。我用一个测试应用程序制作了一个工作示例:

    [HttpGet]
    public ActionResult GetCode()
    {
        //build url from config file
        string url = "https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=78z99sg1ncgbma&redirect_uri=http://localhost:60137";

        return new RedirectResult(url);
    }

希望这会有所帮助。