在尝试获取公司信息时,LinkedIn API无法连接

时间:2016-11-17 12:05:40

标签: c# linkedin-api

当我尝试使用HttpWebRequest获取配置文件信息时,它运行正常,它会返回我需要的响应。

但是当我尝试获取公司信息时,LinkedIn网络服务会返回以下错误。

  

{" errorCode":0,
      " message":"未知的身份验证方案",       " requestId":[RequestID],
      " status":401,
      " timestamp":1479383163405}

我在两个查询中都使用了相同的访问令牌。我无法理解为什么我在第二个查询中验证失败。

有两个功能:

//获取个人资料:

private void GetPeopleProfile(string accessToken) {
    var peopleUrl = String.Format("https://api.linkedin.com/v1/people/~?oauth2_access_token={0}&format=json",accessToken);
    HttpWebRequest webRequest = WebRequest.Create(peopleUrl) as HttpWebRequest;

    StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
    string responseData = responseReader.ReadToEnd();
    JObject updates = JObject.Parse(responseData);

    responseReader.Close();
    webRequest.GetResponse().Close();

}

//获取个人资料公司:

private void GetUserCompanies(string accessToken){

    var copaniesUrl = String.Format("https://api.linkedin.com/v1/companies?format=json&is-company-admin=true?oauth2_access_token={0}&format=json", accessToken);    

    HttpWebRequest webRequest = WebRequest.Create(copaniesUrl) as HttpWebRequest;

    StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
    string responseData = responseReader.ReadToEnd();
    JObject updates = JObject.Parse(responseData);

    responseReader.Close();
    webRequest.GetResponse().Close();
}

2 个答案:

答案 0 :(得分:2)

可能是错误的网址?

参数分隔符在这里是错误的(URL中的两个?似乎错了,你也在重复format = json):

"https://api.linkedin.com/v1/companies?format=json&is-company-admin=true?oauth2_access_token={0}&format=json"

这看起来更好:

"https://api.linkedin.com/v1/companies?format=json&is-company-admin=true&oauth2_access_token={0}"

您可以在没有代码噪音的情况下尝试使用REST api here

答案 1 :(得分:1)

似乎Linkedin API现在需要一个授权HTTP头而不是一个查询字符串参数oauth2_access_token

  

这是通过在对LinkedIn的API的HTTP调用中包含“Authorization”标头来实现的。   https://developer.linkedin.com/docs/oauth2

尝试此操作并从查询字符串中删除访问令牌:

webRequest Headers.Add("Authorization", "Bearer " + accessToken);