gpt4 book ai didi

javascript - 如何将 Firebase 存储镜像与 Google Cloud Vision API 一起使用?

转载 作者:行者123 更新时间:2023-12-04 21:34:44 27 4
gpt4 key购买 nike

我有一个 web 应用程序,其中用户使用 Firebase Auth 进行匿名身份验证。我将用户的图像存储在 Firebase 存储中,该存储在幕后由 Google Cloud Storage 存储桶提供支持。当我尝试从客户端 javascript 使用 Google Cloud Vision API 来获取图像属性时,出现权限错误。

image-annotator::User lacks permission.: Can not open file: gs://MYAPP.appspot.com/photos/IMG_12345.jpg

如果我将图像公开,一切正常。但这是用户数据,不能公开。我该如何解决这个问题?

我调用视觉 api 的代码:
gapi.client.init({
'apiKey': MY_API_KEY,
'discoveryDocs': ['https://vision.googleapis.com/$discovery/rest'],
// clientId and scope are optional if auth is not required.
'clientId': MY_APP_ID + '.apps.googleusercontent.com',
'scope': 'profile',
}).then(function() {
// 3. Initialize and make the API request.
return gapi.client.vision.images.annotate({
"requests":
[
{
"features":
[
{
"type": "LABEL_DETECTION"
},
{
"type": "IMAGE_PROPERTIES"
}
],
"image":
{
"source":
{
"gcsImageUri": "gs://MY_APP.appspot.com/photos/" + "IMG_12345.jpg"
}
}
}
]
});
}).then(function(response) {
console.log(response.result);
}, function(reason) {
console.log('Error: ' + reason.result.error.message);
});

我将图像上传到存储的代码:
var file = e.target.files[0];
var metadata = {
contentType: file.type
};
console.log(file);

var uploadTask = photosStorageRef.child(file.name).put(file, metadata);

最佳答案

您真的想通过 Google Cloud Functions 之类的方式在服务器端执行此操作。 (see my example here)。

客户端将要求您的 API key 有足够的权限来访问照片,这基本上会将私有(private)照片公开(因为一旦 API key 有权读取它们,有什么办法阻止恶意客户端这样做呢?)。

关于javascript - 如何将 Firebase 存储镜像与 Google Cloud Vision API 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41434746/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com