【问题标题】:LinkedIn API failed to connect when trying to get companies informations尝试获取公司信息时,LinkedIn API 连接失败
【发布时间】:2016-11-17 21:48:20
【问题描述】:

当我尝试使用HttpWebRequest 获取个人资料信息时,它运行良好,它返回了我需要的响应。

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

{ "errorCode": 0,
"message": "未知的认证方案", "requestId": [RequestID],
“状态”:401,
“时间戳”: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();
}

【问题讨论】:

    标签: c# linkedin-api


    【解决方案1】:

    可能是错误的网址?

    这里的参数分隔符是错误的(一个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,而不会产生代码噪音。

    【讨论】:

      【解决方案2】:

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

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

      试试这个并从查询字符串中删除访问令牌:

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

      【讨论】:

      • 不,只是错误的 URL 格式。 Linkedin 要求 Auth 而不是“无效的公司查询请求”,因为 WebRequest 在第二个“?”之前停止 URL 解析。所以不发送 oauth2_access_token。
      • 是的,我在他的网址中看到了双重?...我一开始没有注意到。
      猜你喜欢
      • 2019-08-22
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多