Linkedin eventSubscription API给出403错误



我使用

PUT https://api.linkedin.com/v2/eventSubscriptions/(developerApplication:urn:li:developerApplication:{developer application ID},user:urn:li:user:{member ID},entity:urn:li:organization:{organization ID},eventType:ORGANIZATION_SOCIAL_ACTION_NOTIFICATIONS)

Linkedin API与所有参数完好无损。每个URN被编码为URN:li:organization:12345,编码为URN %3Ali%3Aorganization%3A12345,但仍然得到403响应。

我想你忘了在header中添加这个:X-Restli-Protocol-Version: 2.0.0

应用程序id实际上是url中的数字字段,当您访问应用程序设置时,请使用该值而不是客户端id。

所以原来文档中有很多缺失/不正确的信息。由于我在go中工作,以下是我如何最终获得正确格式的url:

fmt.Sprintf(
"https://api.linkedin.com/v2/eventSubscriptions/(developerApplication:%s,user:%s,entity:%s,eventType:ORGANIZATION_SOCIAL_ACTION_NOTIFICATIONS)",
url.QueryEscape(fmt.Sprintf("urn:li:developerApplication:%s", appId)),
url.QueryEscape(fmt.Sprintf("urn:li:person:%s", userId)),
url.QueryEscape(fmt.Sprintf("urn:li:organization:%s", organizationID)),
)

分解:

  • 需要对urn进行unlencoded,仅对urn进行unlencoded。
    • 不是周围的括号
    • 不是逗号
    • 不是urn (developerApplication:,user:,entity:)前面的冒号
  • 您的PUT请求需要包括X-Restli-Protocol-Version头和Authorization
  • 如果,出于某种原因,您使用/rest/eventSubscriptions/url而不是/v2/eventSubscriptions/,您还需要包含LinkedIn-Version
  • appId不是你的应用程序的客户端id,而是你在linkedin开发者门户的应用设置url中看到的数字id(即https://www.linkedin.com/developers/apps/<appId>/auth)
  • 文档中的URN结构是错误的:你需要使用urn:li:person:<userId>,而不是urn:li:user:<userId>

相关内容

最新更新