首页 > 解决方案 > LinkedIn 用户数据的 API 请求始终返回 401

问题描述

我正在 asp.net 核心上构建移动应用程序的后端(API)。使用 swagger 实现 API 调用的可视化等。目前我正在创建外部身份验证,LinkedIn 有一些问题。

应用程序的结构很简单,移动端获取LinkedIn用户的Access Token并通过API请求将其发送给我,我必须通过接收到的Access Token向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 调用的链接吗?

标签: asp.netasp.net-coreoauth-2.0linkedin-api

解决方案


此问题与框架无关,asp.net但与您正在使用的端点有关。由于 LinkedIn API 的 v1 已被弃用,您需要在此处更改您的端点,如此链接


推荐阅读