ASP.NET MVC 应用程序中,我正在尝试使用 LinkedIn 进行用户身份验证并获取用户的完整配置文件。
我是我们的OpenAuth ( DotNetOpenAuth
and Microsoft.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;
}
}
这使得成功获取用户基本数据。 但是当我像下面这样更改 url 时,它会返回403 Forbidden
private const string UserInfoEndpoint = "https://api.linkedin.com/v2/people/~" + Fields;
或
private const string UserInfoEndpoint = "https://api.linkedin.com/v2/me/?";
我注意到合作伙伴计划,这是我访问这些网址所需要的吗? 或者这里到底出了什么问题?此文档介绍了 v2 API,但没有介绍合作伙伴计划
如果您使用的是V1(直到3月1日),那么这是有效的:https://api.linkedin.com/v1/people/~此网址与r_basicprofile相关
如果要迁移到 V2,则不能使用此 URL,因为在 V2 中,您必须获得链接的权限才能使用r_basicprofile
在 V2 中,您可以使用 : r_liteprofile 作为名字,姓氏,个人资料图片,ID 获取电子邮件的r_emailaddress地址
检查这个 : https://learn.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/migration-faq?context=linkedin/consumer/context