将Firebase存储下载URL发布到外部API

时间:2017-12-05 10:56:25

标签: firebase firebase-storage shopify-app

背景

我想使用Firebase存储对象生成的下载网址将图片上传到Shopify API。我目前正在使用Firebase 'put' method将图像文件blob直接添加到Firebase存储。我的存储规则允许公共读取和用户授权写入。

const storageRef = storage.ref(storage-path);
storageRef.put(image-file-blob).then(snapshot => {
   snapshot.downloadURL;
});

然后我将该网址从firebase传递到云端功能,以处理API上传到Shopify。 Shopify的API需要访问令牌,因此必须从安全的环境上传图像。 Shopify有一个put method用于通过base64或image src添加图片。

const imageData = {
   "asset": {
     "key": `assets/image.jpg`,
     "src": firebaseDownloadURL
   }
}

Shopify.put(`/admin/themes/theme-id/assets.json`, imageData, function (err,data, headers) {

});

问题

当我使用上述方法时,Shopify API会从上传的图像中返回数据(无错误),但图像文件大小始终为0.当我导航到其文件时,图像也不在Shopify仪表板中。我认为这是因为图像没有正确处理。

我尝试将各种不同的文件类型和基于ssl / non ssl的文件上传到Shopify的API。所有工作除了firebase下载URL。

我认为发生了什么

firebase下载URL仅可见,并且只能由浏览器处理。如果第三方api尝试处理图像,那么他们会遇到限制,因为网址确实是“获取”。请求Firebase。

我尝试过什么

我现在使用存储中的图片路径来获取我的云功能代码中的已签名网址,而不是使用下载网址。使用getSignedUrl method。这确实有效,但在我的函数中需要一些额外的代码服务器端。我很乐意将firebase下载网址传递给Shopify。

问题

  • 下载网址是否能够由第3个处理是很常见的 党的图书馆直接?
  • 有没有人有他们已经习惯的过程 用另一种API做类似的事情(可以是Shopify或任何api 将图像src作为参数将其上传到他们的服务。)?

0 个答案:

没有答案