Asp.net mvc 4 在MVC4中使用DotNetOpenAuth的LinkedIn完整配置文件详细信息
我的MVC4应用程序允许使用LinkedIn帐户登录。我想从linkedIn获取登录用户的所有详细信息。目前我已经做了以下工作 在我的AuthConfig.cs中Asp.net mvc 4 在MVC4中使用DotNetOpenAuth的LinkedIn完整配置文件详细信息,asp.net-mvc-4,oauth,linkedin,Asp.net Mvc 4,Oauth,Linkedin,我的MVC4应用程序允许使用LinkedIn帐户登录。我想从linkedIn获取登录用户的所有详细信息。目前我已经做了以下工作 在我的AuthConfig.cs中 Dictionary<string, object> linkedInExtraData = new Dictionary<string, object>(); linkedInExtraData.Add("Icon", "../Images/linkedIn.png"
Dictionary<string, object> linkedInExtraData = new Dictionary<string, object>();
linkedInExtraData.Add("Icon", "../Images/linkedIn.png");
OAuthWebSecurity.RegisterClient(
client: new App_Start.LinkedInCustomClient("xxxxxxxxxxxx", "yyyyyyyyyyyyyyy"),
displayName: "LinkedIn",
extraData: linkedInExtraData);
在我的控制器中
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
if (!result.IsSuccessful)
{
return RedirectToAction("ExternalLoginFailure");
}
我需要在控制器中获取以下详细信息作为身份验证结果
(id,first-name,last-name,interests,headline,industry,summary,email-address,location:(name),picture-url,positions,associations,languages,honors,educations,date-of-birth,primary-twitter-account,three-current-positions,three-past-positions,group-memberships,specialties,skills)
LinkedIn对您的请求的响应将是一个xml文件。格式和字段如中所述 要获取电子邮件字段,您需要将您的请求令牌url修改为
RequestTokenEndpoint=newmessageReceivingEndpoint(“https://api.linkedin.com/uas/oauth/requestToken?scope=r_fullprofile+r_电子邮件地址“,
HttpDeliveryMethods.PostRequest),
您可以按照以下代码中的要求获取字段
XDocument document = LoadXDocumentFromStream(responseStream);
例如:为了从xml文件中获取名字字段
var firstName = document.Root.Element("first-name").Value;
语言、职位、技能等字段将作为配置文件的一部分作为结构化对象返回
例:语言领域
var Lang = document.Root.Element("languages");
var languages = new List<string>();
if (Lang != null)
{
foreach (var l in Lang.Elements())
{
if (l.Element("language") != null && l.Element("language").Element("name") != null)
{
languages.Add(l.Element("language").Element("name").Value);
}
}
}
您是否有一个有效的实施方案?我在互联网上搜索过,找不到任何关于如何将linkedIn中的数据拉入我的应用程序的好例子。
var Lang = document.Root.Element("languages");
var languages = new List<string>();
if (Lang != null)
{
foreach (var l in Lang.Elements())
{
if (l.Element("language") != null && l.Element("language").Element("name") != null)
{
languages.Add(l.Element("language").Element("name").Value);
}
}
}
extraData.Add("firstName", firstName);
extraData.Add("languages", lang);