验证LinkedIn令牌——introspectToken无法工作?

后端开发 2026-07-09

我已经为使用LinkedIn分享API成功生成了一个access_token,但我想验证这个令牌——在进入我的代码时,我想知道我保存的令牌是否仍然有效。他们有一个 "introspectToken" 端点,但我似乎无法让它工作。我构建了URL:

https://www.linkedin.com/oauth/v2/introspectToken?client_id=MY_CLIENT_ID&client_secret=MY_CLIENT_SECRET&token=MY_ACCESS_TOKEN

并使用PHP curl库调用它,同时包含头信息:

'Content-Type: application/x-www-form-urlencoded'

但返回了错误:

A required parameter "client_id" is missing

我在URL中可以看到client_id,因此不知道为什么会得到这个错误。用于获取access_token的代码(accessToken端点)不会对client_id或 client_secret参数进行urlencode,但我也尝试过这样做,将整个 "client_id=THE ID" 字符串进行URL编码等。无济于事。

在命令行使用curl,像这样:

curl --location --request POST 'https://www.linkedin.com/oauth/v2/introspectToken' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=MY_CLIENT_ID' \
--data-urlencode 'client_secret=MY_CLIENT_SECRET' \
--data-urlencode 'token=MY_ACCESS_TOKEN'

运行正常,因此我有点困惑。

解决方案

好吧,我发现如果我:

  1. 去掉 "Content-Type: application/x-www-form-urlencoded" 头
  2. 使用 "http_build_query" 来创建请求体

就能让它工作,尽管在 "用代码换取access_token" 的调用中这并非必须。对现有代码进行改造后就能奏效。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章