首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AMO CI总是提供找到的附加ID副本。

AMO CI总是提供找到的附加ID副本。
EN

Stack Overflow用户
提问于 2017-06-10 10:25:36
回答 1查看 573关注 0票数 1

目前,我正试图使用这个API /终结点https://addons.mozilla.org/api/v3/addons来自动更新构建管道中的web扩展。

所以我使用的实际命令如下所示:

代码语言:javascript
复制
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 )

我现在总是(经过多次验证和错误验证):

代码语言:javascript
复制
{"error":"Duplicate add-on ID found."} 

我的舱单里有:

代码语言:javascript
复制
"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的一些格式和version属性的明显不同之外,它们看起来是相同的。

我遗漏了什么,AMO实际上无法将我的更新与我现有的扩展相匹配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-10 18:14:21

虽然我还没有对其进行测试,但您显然是将请求发送到没有ID的WebExtensions的URL,而不是为您的加载项的上传新版本发送ID的URL。AMO使用加载项ID来匹配当前的加载项。WebExtension唯一没有ID的时候是第一次将新的扩展上传到AMO (在开发过程中,您选择不自己分配ID )。

当你第一次上传你的插件并列出WebExtension之后,它就有了一个ID。因此,我假设文档并不是100%明确的,没有ID的上传仅仅是为了上传一个新的WebExtension插件。唯一让我认为您使用的URL可能用于带有ID的WebExtensions的是声称可能存在的错误消息,但该错误列表可能只是来自另一节的复制和粘贴。

上传一个新的WebExtensions外接程序(没有ID):

代码语言:javascript
复制
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):

代码语言:javascript
复制
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>"

在你的案件中:

代码语言:javascript
复制
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 ID URL应该被澄清。

请测试这一点,以验证您可以上传一个新版本(包括applications在您的manifest.json)使用正常的网址上传一个版本。如果您确认这是可行的,我将向文档提交一个拉请求,以使其更加清楚。

注意:当谈到更新插件时,关于MDN的文档声明:

使用此工作流,您必须使用AMO上的页面手动更新外接程序,否则AMO将不理解提交的是对现有外接程序的更新,并将该更新视为全新的附加组件。

但是,应该注意的是,即使是该部分也在讨论在没有在applications键中指定ID的情况下更新外接程序。因此,即使这些文档也不是100%清晰的。

替代可能性

如果您所使用的URL实际上既适用于没有ID的新WebExtensions,也适用于已存在的带有ID的WebExtensions的新版本:

  1. 您已经上传了1.0.17版本的插件。如果是这样的话,有一个错误会返回"Duplicate add-on ID found."错误,而不是让错误文本解释这个ID存在一个重复版本。如果是这样的话,那么我会考虑在文档中也需要澄清WebExtensions是有ID的还是没有ID的:声明它没有ID只涉及到使用的URL和传递给WebExtensions的参数。
  2. 您还没有上传1.0.17版本的插件。如果是这样的话,有一个错误不允许上传已经存在的外接程序ID的新版本。一个简单的解决方案就是声明这是预期的操作,并更改文档,以明确应该使用"with ID“URL/PUT,而不是使用新的- add-on,即”没有ID“的URL/POST。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44472217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档