linkedin - 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,我会期望它在所有资产都可用时变得可用。
第二个最好的选择是如果你在这种情况下至少有一个错误。
如果您需要轮询资产以使其可用,则应在文档中提及(也许是,但我找不到),并且轮询调用不应包含在您的每日配额中。
解决方案
所以官方的回答是:
如果您使用 https://api.linkedin.com/v2/assets?action=registerUpload 上传图片(或其他资产),则需要使用 https://api.linkedin.com/v2/assets/ 进行轮询并等待在您可以在https://api.linkedin.com/v2/ugcPosts的帖子中引用它们之前,它们将变为“可用” 。不然帖子会说成功了,但是不行。
推荐阅读
- c++ - 重载预增量运算符
- php - 如果包含一些字符串,则从数组中删除元素
- mysql - 当您在 mysql 或 tableau 中有登录和注销时间戳时,按小时计算登录时间
- python - 搜索重复的连续行并放入额外的列 pandas
- python - 从另一个子文件夹导入类
- c# - System.Linq.Dynamic.Core.DynamicExpressionParser.ParseLambda 抛出 System.NotSupportedException
- assembly - 我没有弄明白这个示例程序集有什么问题
- python - Python。正则表达式中的变量以查找相同字符串的连续(重复)序列
- build.gradle - 找不到 pubspec.yaml 文件
- javascript - Javascript 硬币翻转初学者