LinkedIn API - ACCESS_DENIED - 没有足够的权限来访问

问题描述 投票:0回答:1

当我请求

/rest/me
LinkedIn API 端点时...

curl --location 'https://api.linkedin.com/rest/me' /
--header 'Content-Type: application/json' /
--header 'Authorization: Bearer {MY_TOKEN}' /
--header 'LinkedIn-Version: 202306'
--header 'X-Restli-Protocol-Version: 2.0.0'

我遇到错误...

{
    "status": 403,
    "serviceErrorCode": 100,
    "code": "ACCESS_DENIED",
    "message": "Not enough permissions to access: partnerApiMe.GET.20230601"
}

我的访问令牌具有 API 文档中列出的权限范围 (

r_liteprofile
)。因此,我向 LinkedIn 开发人员支持团队发送了一条消息,他们说...

...从版本 202306 开始,对 r_liteprofile 的支持已取消,但我们正在尝试获得对该决定的官方确认,以更新文档。允许 /me 访问的最小权限现在将是 r_basicprofile 。

明白了。 API 文档是错误的。因此,我将权限从

r_liteprofile
更改为
r_basicprofile
,生成了新的访问令牌,但我仍然遇到相同的错误。

几个小时后,我再次测试代码,它成功了!但为什么呢?

authentication permissions linkedin-api access-denied
1个回答
0
投票

“修复”

更改权限后,等待至少 5 分钟后再进行测试

为什么?

LinkedIn API 访问令牌存在 缓存错误

生成新的访问令牌 SHOUD 会使之前的令牌失效,但是有一个 5 分钟的窗口,您的新令牌可能会表现得像旧令牌(使用旧的权限/范围)。

这使得 LinkeIn API 开发非常困难。 每当开发人员更改权限范围时,新令牌都可能会抛出(无效)权限错误几分钟,使范围更改看起来没有任何区别。然后几分钟后,新的权限将意外生效,使得该错误很难重现。

已报告错误

我用一个应用程序来证明这一点向 LinkedIn 开发者支持团队报告了这一点,他们做出了回应...

经过多次讨论,团队已确认他们会将其视为产品改进的一部分,但目前 5 分钟 TTL 是预期行为。 开发人员通常没有这种尝试为不同权限组合生成令牌的模式。这更像是罕见的用例。

目前我们已将此反馈添加到我们的路线图中。不幸的是,我们没有具体的时间表来说明何时将其实施到生产中

我不同意。 更改权限和生成新令牌是开发人员经常做的事情,因为他们试图找出不同的 API 调用需要哪些权限。我知道我已经这样做了很多次,尤其是在发现一些 API 文档没有保持最新之后......只是必须记住在测试之前等待 5 分钟。

如果您遇到这个问题,请投票支持这个问题,这样LinkedIn就会看到有多少开发者遇到这个问题。

版本升级警告

这也会在升级

LinkedIn-Version
时产生问题。在版本
202306
中,他们更改了
/rest/me
端点所需的权限 - 从
r_liteprofile
更改为
r_basicprofile
。这意味着我们将不得不要求一些客户重新授权他们的 LinkedIn 帐户,以获得新的访问令牌(具有
r_basicprofile
范围)。但如果他们的旧令牌(带有
r_liteprofile
)在过去 5 分钟内被使用,他们可能会遇到此缓存错误,并出现权限错误。

© www.soinside.com 2019 - 2024. All rights reserved.