LinkedIn API在尝试获取公司信息时无法连接
问题描述:
当我尝试获取个人资料信息时,使用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();
}
答
看来,LinkedIn的API现在预计的授权HTTP而不是查询字符串参数oauth2_access_token
。
这是通过在LinkedIn的API的HTTP调用中包含一个“Authorization”头部来实现的。 https://developer.linkedin.com/docs/oauth2
试试这个,从查询字符串中删除访问令牌:
webRequest Headers.Add("Authorization", "Bearer " + accessToken);
答
也许错了网址?
参数分隔符都错了(两个网址好像不对,你也重复格式= 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没有你的代码噪音。
不,只是不好的网址格式。 Linkedin请求Auth而不是“公司查询请求无效”,因为WebRequest在第二个“?”之前停止了URL解析。所以不发送oauth2_access_token。 – jlvaquero
是的,我在他的URL中看到了双“?”......我最初没注意到它。 – mtheriault