Linkedin API无效访问令牌

时间:2016-07-14 12:57:40

标签: php oauth linkedin linkedin-api

我正在使用linkedin API。我已按照https://developer.linkedin.com/docs/oauth2给出的说明进行操作 - 因此我获得了代码,并将其替换为访问令牌。都好。

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

发送给API的My Header Params是:

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_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来回复。

请参阅https://developer.linkedin.com/docs/share-on-linkedin了解我正在关注的文档

我确信访问令牌是正确的,我怀疑我没有正确地在标题中传递它"授权:承载",或者我的端点URL不太正确,我也试过这个:

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

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

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

2 个答案:

答案 0 :(得分:3)

好的,所以这很奇怪。我的访问令牌被退回(我认为是正确的)。在分配了头部划痕后,我决定使用apigee.com上的API控制台仔细检查所有内容。我检查了访问令牌并猜测是什么,它是我从Linkedin Oauth2收到的所有令牌长度的两倍。奇怪。

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

我不知道问题是什么,但我的代码现在正在运行。

很抱歉向您说这个,但是您的文档不再需要,当您更改API规范时,您还需要更新您的文档。我有很多处理API的问题。此外,如果您要将支持部门移至Stackoverflow,良好实践要求您监控请求。 对于任何有兴趣的人,在2016年春季变更后,Linkedin列出的图书馆不起作用。主要问题是所有范围都有限。

答案 1 :(得分:1)

我遇到了同样的问题,答案是: The length of Access Tokens is ~500 characters. We recommend that you plan for your application stack to handle tokens with length of at least 1000 characters in order to accommodate current and any future expansion plans. This applies to both Access Tokens as well as Refresh Tokens.

在我的情况下,我使用Symfony 3.4和Doctrine 2作为ORM,我在注释中使用了这些代码:

s=df.set_index(['GRP','FILESIZE'])[['HOST1','HOST2','HOST3']].stack().to_frame('HOST').reset_index(level=1)
s.groupby([s.index.get_level_values(level=0),s.HOST.values]).FILESIZE.agg(['count','sum'])

正如您所看到的,我没有在数据库中存储完整的访问令牌以进行经过身份验证的请求,因此更改上面的代码:

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

一切都开始像魅力一样.....我希望这有助于!!!!!

相关问题