Asp.net mvc 4 在MVC4中使用DotNetOpenAuth的LinkedIn完整配置文件详细信息

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"

我的MVC4应用程序允许使用LinkedIn帐户登录。我想从linkedIn获取登录用户的所有详细信息。目前我已经做了以下工作

在我的AuthConfig.cs中

  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);