包括v2在内的任何请求URL上的LinkedIn API 403(禁止)

时间:2019-01-08 18:53:53

标签: api asp.net-mvc-5 asp.net-identity linkedin

在ASP.NET MVC应用程序中,我试图使用LinkedIn进行用户身份验证并获取用户的完整个人资料。

我正在使用OpenAuth(DotNetOpenAuthMicrosoft.AspNet.Membership.OpenAuth

请求用户数据

  private const string UserInfoEndpoint = "https://api.linkedin.com/v1/people/~" + Fields;

  var uri = BuildUri(UserInfoEndpoint, new NameValueCollection { { "oauth2_access_token", accessToken } }); 

  var webRequest = (HttpWebRequest)WebRequest.Create(uri); 
        using (var webResponse = webRequest.GetResponse())
        using (var stream = webResponse.GetResponseStream())
        {
            if (stream == null)
                return null; 
            using (var textReader = new StreamReader(stream))
            {
                var xml = textReader.ReadToEnd();

                var extraData = XElement.Parse(xml)
                .Elements()
                .ToDictionary(
                    el => el.Name.LocalName,
                    el => el.Value
                ); 
                extraData.Add("accesstoken", accessToken); 
                return extraData;
            }
        }

这成功获取了用户基本数据。但是当我按如下所示更改网址时,它返回403 Forbidden

private const string UserInfoEndpoint = "https://api.linkedin.com/v2/people/~" + Fields;

private const string UserInfoEndpoint = "https://api.linkedin.com/v2/me/?";

我注意到了伙伴计划,那是我访问这些URL所需要的吗?还是这里真的有什么问题? This docs about the v2 API but nothing about partnership program

1 个答案:

答案 0 :(得分:0)

如果您使用的是V1(直到3月1日),那么这是有效的: https://api.linkedin.com/v1/people/~ 该网址与r_basicprofile

有关

如果您要转到V2,则不能使用此URL,因为在V2中,您必须获得链接的许可才能使用r_basicprofile

在V2中,您可以使用:r_liteprofile作为firstName,lastName,profilePicture,id  r_emailaddress获取电子邮件地址

检查:https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/migration-faq?context=linkedin/consumer/context