私はユーザーがFirebase Authで匿名で認証されているWebアプリケーションを持っています。 Firebase Storageにはユーザーの画像が保存されます.Facebase Storageの背後にはGoogle Cloud Storageのバケツが付いています。クライアントサイドのjavascriptからGoogle Cloud Vision APIを使用して画像プロパティを取得しようとすると、パーミッションエラーが発生します。Google Cloud Vision APIでFirebase Storageイメージを使用するにはどうすればよいですか?
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);
写真ごとにユーザー認証を行う方法はありますか?ファイアベースストレージを介してアクセスする場合は、これが可能です。詳しくは、「Firebase StorageはFirebase認証とシームレスに統合され、ユーザーを特定し、アクセスを設定する宣言型セキュリティ言語を提供します。個々のファイルやファイルのグループを制御するので、必要に応じてファイルを公開または非公開にすることができます。 – astromme
また、ありがとう。クラウド関数alphaへのアクセスをリクエストしました。私は今待っていると思う? – astromme
Firebaseの土地では、次を参照してください:https://firebase.google.com/docs/storage/security/user-security –