领英用户数据的API请求始终返回401

时间:2019-06-16 17:36:56

标签: asp.net asp.net-core oauth-2.0 linkedin-api

我正在asp.net核心上构建移动应用程序的后端(API)。使用摇摇欲坠来可视化API调用等。目前,我正在创建外部身份验证,我在使用LinkedIn时遇到了一些问题。

应用程序的结构很简单,移动端获取LinkedIn用户的访问令牌并通过API请求将其发送给我,我必须通过收到的访问令牌向LinkedIn请求用户数据,注册或登录他/她并将响应返回给移动端侧。

下面是代码,并在我尝试发送请求的地方添加了注释链接。

    public async Task<IResponse<LinkedInAuthenticationResponse>> LinkedInAuthentication(string accessToken)
    {
        using (var httpClient = new HttpClient())
        {
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            httpClient.DefaultRequestHeaders.Add("x-li-format", "json");
            var oauthUrl = "https://api.linkedin.com/v1/people";

            // https://api.linkedin.com/v2/me
            // https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)

            var response = httpClient.GetAsync(oauthUrl).Result;
            string responseContent = string.Empty;
            try
            {
                responseContent = await response.Content.ReadAsStringAsync();
                response.EnsureSuccessStatusCode();
                return Ok(JsonConvert.DeserializeObject<GoogleAuthenticationResponse>(responseContent));
            }
            catch (Exception ex)
            {
            }
        }
    }

问题在于LinkedIn并未提供应发送API调用的确切链接,我不得不尝试其中的几个,但响应始终为401。

我的访问令牌有效,这不是问题。我为Facebook和Google使用了几乎相同的代码,并且它们运行良好。

任何人都可以提供适用于API调用的链接吗?

1 个答案:

答案 0 :(得分:0)

此问题与asp.net框架无关,但与您正在使用的端点无关。由于不推荐使用LinkedIn API v1,因此您需要像this link here

那样更改端点