Linkedin API - 资源{Person}中的未知字段{}

时间:2013-10-08 16:07:58

标签: c# api rest linkedin

经过数百次测试后,我仍然无法通过LinkedIn API访问有关我的1级联系人的信息。

我总是在资源{Person}中出现非常烦人的“Unknown field {”错误。

我使用OAuth2。以下请求完美无缺:

https://api.linkedin.com/v1/people/~?oauth2_access_token=AQW ...

那个没有:

https://api.linkedin.com/v1/people/url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fsebastienrousset?oauth2_access_token=AQW ...

  • 指定的个人资料网址是1级联系人的公开网址
  • 我看过很多关于与斜杠编码相关的特定错误的帖子=>我的编码是正确的。
  • 是的,我为应用程序提供了默认范围basicprofile,fullprofile和network
  • 我在请求OAuth2授权时在显式范围内做了同样的事。

我错过了什么? 任何帮助将不胜感激

以防万一,让我添加一个示例代码

// works
//var url = "https://api.linkedin.com/v1/people/~?oauth2_access_token=" + tokenAccess;
// does not work
var url = "https://api.linkedin.com/v1/people/url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fsebastienrousset?oauth2_access_token=" + tokenAccess;

// create the request
var request = (WebRequest.Create(url) as HttpWebRequest);

string message;
try
{
    // now get a response
    var response = (request.GetResponse() as HttpWebResponse);

    message = "success";
}
catch (WebException wexc)
{
     // returned status code is 400 (BadRequest)
     message = "failure - HTTP " + ((HttpWebResponse)wexc.Response).StatusCode;
}

1 个答案:

答案 0 :(得分:0)

答案是:把它放到你的web.config

<uri>
  <schemeSettings>
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
    <add name="https" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
  </schemeSettings>
</uri>

.Net框架在URI解析上添加了一个额外的安全性,可以逃避斜杠。 这就是我的请求可以作为linkedin API的BadRequest结束的原因。