当我尝试使用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();
}
答案 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);