我目前正尝试使用此API /端点https://addons.mozilla.org/api/v3/addons在我的构建管道中自动更新我的网络扩展程序。
所以我使用的实际命令如下所示:
curl "https://addons.mozilla.org/api/v3/addons/" -g -XPOST --form "upload=@dist/firefox/psono.firefox.PW.zip" -F "version=1.0.17" -H "Authorization: JWT ABCDEFG..."
(文档http://addons-server.readthedocs.io/en/latest/topics/api/signing.html#uploading-without-an-id)
我现在所处的地方(经过大量尝试和身份验证错误后):
{"error":"Duplicate add-on ID found."}
我明白了这一点:
"manifest_version": 2,
"name": "psono.PW",
"description": "Psono Password Manager",
"version": "1.0.17",
... alot of other stuff ...
"applications": {
"gecko": {
"id": "{3dce78ca-2a07-4017-9111-998d4f826625}"
}
}
如果我删除这个"应用程序"属性,然后它通过,但它创建一个新的扩展而不是更新现有的扩展。我已经将现有扩展和新版本的清单区分开了,除了JSON的一些格式和版本属性的明显区别之外,它们看起来完全相同。
我缺少什么,AMO API实际上无法将我的更新与我现有的扩展名匹配?
答案 0 :(得分:2)
虽然我尚未对其进行测试,但您显然是将请求发送到WebExtensions without an ID的网址,而不是带有ID的加载项uploading a new version的网址。 AMO使用附加ID来匹配当前存在的附加组件。 WebExtension没有ID的唯一时间是您第一次将新扩展名上传到AMO(并且您已选择在开发期间不自行分配ID)。
首次将附加组件上传到AMO并列出WebExtension后,它会有一个ID。因此,我认为文档并非100%明确表示没有ID的上传仅 用于上传新 WebExtension插件。唯一能让我认为你正在使用的URL 用于带有ID的WebExtensions的错误消息是声称可能的错误消息,但错误列表可能只是一个副本和放大器; - 从另一部分开始。
上传新的WebExtensions插件(不含ID):
curl "https://addons.mozilla.org/api/v3/addons/"
-g -XPOST -F "upload=@build/my-addon.xpi" -F "version=1.0"
-H "Authorization: JWT <jwt-token>"
上传新版附加组件(带ID):
curl "https://addons.mozilla.org/api/v3/addons/@my-addon/versions/1.0/"
-g -XPUT --form "upload=@build/my-addon.xpi"
-H "Authorization: JWT <jwt-token>"
例如在你的情况下:
curl "https://addons.mozilla.org/api/v3/addons/{3dce78ca-2a07-4017-9111-998d4f826625}/versions/1.0.17/"
-g -XPUT --form "upload=@dist/firefox/psono.firefox.PW.zip"
-H "Authorization: JWT ABCDEFG..."
我认为这是上传过程文档中的一个问题,其中应明确说明WebExtensions-no-ID URL的实际使用情况。
请对此进行测试,以验证您是否可以使用普通网址上传新版本(包括 manifest.json 中的applications
)以上传版本。如果您确认有效,我会向文档提交拉取请求以使其更清晰。
注意:documentation on MDN在谈到更新您的插件时说明:
在此工作流程中,您必须使用其在AMO 上的页面手动更新加载项,否则AMO将无法理解提交是对现有加载项的更新,并将对待将更新作为全新的附加组件。
但是,应该注意的是,即使该部分也在讨论在没有applications
密钥中指定的ID的情况下更新加载项。因此,即使该文件也不是100%明确。
如果您使用的URL实际上适用于没有ID 和的现有WebExtensions的新版本的新WebExtensions:
"Duplicate add-on ID found."
错误,而不是让错误文本说明此ID存在重复版本。如果是这种情况,那么我认为文档中还需要澄清URL是针对带有和没有ID的WebExtensions:表明它没有ID只是关于使用的URL和传递给它的参数。 API。