在ASP.NET MVC应用程序中,我试图使用LinkedIn进行用户身份验证并获取用户的完整个人资料。
我正在使用OpenAuth(DotNetOpenAuth
和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;
}
}
这成功获取了用户基本数据。但是当我按如下所示更改网址时,它返回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
答案 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获取电子邮件地址