首页 > 解决方案 > UgcPost '成功',但返回的 URN 不存在 - 除非您先等待

问题描述

我尝试使用 v2 API 在 LinkedIn 上“共享”图像+文本。问题是这有时会导致共享不存在,但上传时没有错误消息。

如果在引用的资产处于 AVAILABLE 状态之前调用 ugsPosts,则该调用将返回 201 Created with an id urn,但不会创建共享。

我们通过https://api.linkedin.com/v2/assets?action=registerUpload上传图片,然后使用它提供的链接实际发布图片。

如果我们随后尝试立即通过https://api.linkedin.com/v2/ugcPosts发布共享,它将返回 201 Created 状态并带有 id 标签:“urn:li:share:”,它不存在。如果手动转到用户的个人资料,则没有发布任何共享,并且如果尝试构建像https://www.linkedin.com/feed/update/urn:li:share这样的链接:它什么也没有。

我们想出的唯一解决方案是在调用 ugcPosts 之前轮询https://api.linkedin.com/v2/assets/直到状态为 AVAILABLE。但是,这不能很好地扩展,因为检查状态的调用次数限制与创建图像的调用次数相同。ugcPosts 在创建帖子失败时返回 201 Created 是否是错误?是否有官方方法可以创建指向已创建共享的链接,我们希望在帖子完成后向用户显示一个“查看共享”按钮?

我们目前必须在发布共享之前轮询图像资产以使其变为“可用”。

当我们调用 https://api.linkedin.com/v2/assets?action=registerUpload 然后直接 调用https://api.linkedin.com/v2/ugcPosts 结果总是“201 Created”,但是共享不是始终可用。

问题似乎是,如果您调用https://api.linkedin.com/v2/ugcPosts,则在图像状态为 AVAILABLE 之前(通过轮询https://api.linkedin.com/v2/assets/)共享将不起作用。

如果在所有资产“可用”之前调用 ugcPosts,我会期望它在所有资产都可用时变得可用。

第二个最好的选择是如果你在这种情况下至少有一个错误。

如果您需要轮询资产以使其可用,则应在文档中提及(也许是,但我找不到),并且轮询调用不应包含在您的每日配额中。

标签: linkedinlinkedin-api

解决方案


所以官方的回答是:

如果您使用 https://api.linkedin.com/v2/assets?action=registerUpload 上传图片(或其他资产)则需要使用 https://api.linkedin.com/v2/assets/ 进行轮询等待在您可以在https://api.linkedin.com/v2/ugcPosts的帖子中引用它们之前,它们将变为“可用” 。不然帖子会说成功了,但是不行。


推荐阅读