验证LinkedIn令牌——introspectToken无法工作?
我已经为使用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'
运行正常,因此我有点困惑。
解决方案
好吧,我发现如果我:
- 去掉 "Content-Type: application/x-www-form-urlencoded" 头
- 使用 "http_build_query" 来创建请求体
就能让它工作,尽管在 "用代码换取access_token" 的调用中这并非必须。对现有代码进行改造后就能奏效。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。