0

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

我总是收到非常烦人的“资源 {Person} 中的未知字段 {}”错误。

我使用 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 ...

  • 给定的个人资料 url 是 1 级联系人的公共利润 url
  • 我看过很多关于与斜线编码相关的特定错误的帖子=>我的编码是正确的。
  • 是的,我为应用程序提供了默认范围 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;
}
4

1 回答 1

0

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

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

.Net 框架在 URI 解析中添加了一个额外的安全性,可以转义斜杠。这就是为什么我的请求可能以针对linkedin API 的 BadRequest 结束。

于 2013-10-09T08:36:14.587 回答