2016-11-17 69 views
0

当我尝试获取个人资料信息时,使用HttpWebRequest,它完美地工作,它返回我需要的响应。LinkedIn API在尝试获取公司信息时无法连接

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

{ “的errorCode”:0,
“消息”: “未知认证方案”, “的requestId”:[请求ID],
“状态”:401,
“时间戳”:1479383163405}

我在两个查询中都使用了相同的访问令牌。而且我无法弄清楚为什么我在第二个查询中失败了身份验证。

有2个功能:

//获取配置文件:

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

回答

1

看来,LinkedIn的API现在预计的授权HTTP而不是查询字符串参数oauth2_access_token

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

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

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

不,只是不好的网址格式。 Linkedin请求Auth而不是“公司查询请求无效”,因为WebRequest在第二个“?”之前停止了URL解析。所以不发送oauth2_access_token。 – jlvaquero

+0

是的,我在他的URL中看到了双“?”......我最初没注意到它。 – mtheriault

2

也许错了网址?

参数分隔符都错了(两个网址好像不对,你也重复格式= 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没有你的代码噪音。