Php Linkedin API无效访问令牌

Php Linkedin API无效访问令牌,php,oauth,linkedin,linkedin-api,Php,Oauth,Linkedin,Linkedin Api,我正在使用linkedin API。我已经遵循了在给出的指令,所以我得到了代码,并将其交换为访问令牌。一切都好 现在,当我尝试点击API时,例如发布更新,“步骤4-发出经过身份验证的请求”,我总是从API返回一个错误,说我的访问令牌无效 发送到API的头参数如下: array(5) { [0]=> string(22) "Connection: Keep-Alive" [1]=> string(137) "Authorization: Bearer AQS888888

我正在使用linkedin API。我已经遵循了在给出的指令,所以我得到了代码,并将其交换为访问令牌。一切都好

现在,当我尝试点击API时,例如发布更新,“步骤4-发出经过身份验证的请求”,我总是从API返回一个错误,说我的访问令牌无效

发送到API的头参数如下:

array(5) {
  [0]=>
  string(22) "Connection: Keep-Alive"
  [1]=>
  string(137) "Authorization: Bearer AQS888888888888888888888888888888-Ab2HY"
  [2]=>
  string(30) "Content-Type: application/json"
  [3]=>
  string(17) "x-li-format: json"
  [4]=>
  string(19) "Content-Length: 171"
}
API响应总是告诉我:

string(134) "{
  "errorCode": 0,
  "message": "Invalid access token.",
  "requestId": "IRBXBZ1X5V",
  "status": 401,
  "timestamp": 1468498680913
}"
我的调试从
curl\u getinfo()
返回以下数据:

array(22) {
  ["url"]=>
  string(29) "https://api.linkedin.com/v1/?"
  ["content_type"]=>
  string(30) "application/json;charset=UTF-8"
  ["http_code"]=>
  int(401)
  ["header_size"]=>
  int(495)
  ["request_size"]=>
  int(466)
  ["filetime"]=>
  int(-1)
  ["ssl_verify_result"]=>
  int(0)
  ["redirect_count"]=>
  int(0)
  ["total_time"]=>
  float(0.275796)
  ["namelookup_time"]=>
  float(0.003589)
  ["connect_time"]=>
  float(0.00685)
  ["pretransfer_time"]=>
  float(0.055621)
  ["size_upload"]=>
  float(171)
  ["size_download"]=>
  float(134)
  ["speed_download"]=>
  float(485)
  ["speed_upload"]=>
  float(620)
  ["download_content_length"]=>
  float(134)
  ["upload_content_length"]=>
  float(171)
  ["starttransfer_time"]=>
  float(0.275764)
  ["redirect_time"]=>
  float(0)
  ["certinfo"]=>
  array(0) {
  }
  ["redirect_url"]=>
  string(0) ""
}
我正在发布并期望得到JSON而不是XML的响应

请参阅以获取我正在跟踪的文档

我确信访问令牌是正确的,我怀疑我没有在标题“Authorization:Bearer”中正确地传递它,或者我的端点URL不太正确,我也尝试过这样做:

https://api.linkedin.com/v1/people/~/shares?format=json


有什么想法吗?注意我已经删除了这里的大部分访问令牌,不要要求我发布它

好吧,这很奇怪。我的访问令牌正在被返回(我认为是正确的)。在经历了一番令人头疼的事情之后,我决定使用apigee.com上的API控制台对所有内容进行双重检查。我检查了访问令牌,猜猜看,它的长度是我从Linkedin Oauth2收到的所有令牌长度的两倍。。奇怪

所以我硬编码这个新的访问令牌到我的系统-繁荣!一切正常(为什么我总是怀疑我的代码!) 所以我检查了所有东西,为什么我的访问代码被截断了??DB-很好。代码-很好。很奇怪。 我决定重新点击auth api以获得一个新的访问令牌(我一定已经做了大约100次了!)嘿,普雷斯托!我现在有一个长访问代码

我不知道问题出在哪里,但我的代码现在正在运行

很抱歉告诉你linkedin,但是你的文档还有待改进,当你更改api规范时,你也需要更新你的文档。我在处理API时遇到了很多问题。此外,如果您要将支持部门转移到Stackoverflow,良好的实践要求您监控请求。
对任何感兴趣的人来说,Linkedin列出的图书馆在2016年春季做出更改后就不起作用了。主要问题是所有的作用域都受到了限制。

我也遇到了同样的问题,答案如下:

在我的例子中,我使用Symfony 3.4和Doctrine 2作为ORM,我在注释中有一段代码:

/**
 * @var string
 *
 * @ORM\Column(name="access_token", type="string", length=255)
 */
private $accessToken;
如您所见,我没有将完全访问令牌存储在数据库中以进行身份验证请求,因此通过以下方式更改上述代码:

  /**
 * @var text
 *
 * @ORM\Column(name="access_token", type="text")
 */
private $accessToken;

一切都开始像一个魔咒一样运转。。。。。我希望这有帮助

现在他们的v2 api也出现了同样的通信问题。他们没有提供一份可靠的文件。我们的Oauth2令牌不适用于v2端点,显然,您需要对此具有特殊权限,但它们没有告诉您访问v2 api应遵循的确切步骤。@javadev您是如何找到如何处理v2的?我也有同样的问题。@gabriel_vincent v2需要特殊许可,您需要请求。我忘记了网址的时间,但应该很容易找到。
  /**
 * @var text
 *
 * @ORM\Column(name="access_token", type="text")
 */
private $accessToken;