通过Linkedin API请求检索共享分析



我试图通过这个请求获得有机帖子的指标:

https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn%3Ali%3Aorganization%3A24445&ugcPosts[0]=urn%3Ali%3AugcPost%3A7008096555

但是我得到了这个错误:

"serviceErrorCode": 100,
"code": "ACCESS_DENIED",
"message": "Unpermitted fields present in PARAMETER: Data Processing Exception while processing fields [/ugcPosts[0]]" 

任何想法?

更新答案

我从LinkedIn的支持那里得到了一个答案,至少让我走上了正确的轨道:他们让我检查我的请求是否有正确的标题。事实证明,organizationalEntityShareStatistics调用不喜欢使用"x - restli - protocol - version"来调用。HTTP报头当拥有"股份"时;在请求中

像往常一样,开发人员文档从来没有告诉你什么时候设置哪个头文件,什么时候不设置——而且整个"有多个版本的API版本"。

对我来说,这是一个有效的请求:

GET https://api.linkedin.com/rest/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn%3Ali%3Aorganization%3A<org-id>&shares[0]=urn%3Ali%3Ashare%3A<share-id>
Authorization: Bearer <token>
Accept: */*
Accept-Encoding: gzip, deflate, br
LinkedIn-Version: 202211

确保查询字符串中的urn是urlencoded (urn%3Ali%3A...)。对于参数名(shares[0]),您可以使用编码或未编码-两者都可以。

只要确保不是设置X-Restli-Protocol-Version标头


原始回答

注意下面的只是一个短期的临时解决方法因为未版本的API已被弃用,并将在2023年2月底日落-但截至今天,您仍然可以使用旧的API调用:

https://api.linkedin.com/v2/organizationalEntityShareStatistics?q=organizationalEntity&organizationalEntity=urn%3Ali%3Aorganization%3A24445&shares%5B0%5D=urn%3Ali%3AugcPost%3A7008096555

您必须做的其他更改:

  • 注意有"/v2/"而不是"/rest/"在URL
  • 不设置LinkedIn-Version请求头
  • 不设置X-Restli-Protocol-Version请求头
  • 如果要查询特定的时间范围,则使用新的"versioned"的语法。API看起来像这样的timeIntervals=(timeGranularityType:DAY,timeRange:(start:1667257200000,end:1673297200000)),但在旧的API版本中,时间范围必须去三个独立的查询参数,如timeIntervals.timeGranularityType=DAY&timeIntervals.timeRange.start=1667257200000&timeIntervals.timeRange.end=1673297200000

我将更新这个答案,只要我弄清楚我必须做什么才能得到新的API版本的工作。到目前为止,我得到了与您看到的完全相同的ACCESS_DENIED错误消息。

最新更新