Предоставьте API Google Cloud Vision доступ к хранилищу Firebase.

Я использую Firebase на iOS и хочу, чтобы пользователи загружали фотографии в хранилище Firebase. После этого я хочу проанализировать фотографию с помощью API Google Cloud Vision.

Загрузка работает нормально.

Для анализа фото я уточняю его с помощью

image = {
    source = {
        gcsImageUri = "gs://app.name.from.firebase.console/path.to.photo";
    };
};

Проблема в том, что я получаю следующую ошибку

error = {
    code = 7;
    message = "image-annotator::User lacks permission.: Calling GetObjectMetadata with file \"/bigstore/gs://app.name.from.firebase.console/path.to.photo\": cloud.bigstore.ResponseCode.ErrorCode::ACCESS_DENIED: ACCESS_DENIED: gaiaUser/0 does not have OBJECTS_GET access to object gs://app.name.from.firebase.console/path.to.photo.";
};

Есть ли у вас какие-либо предложения w.r.t. какие разрешения мне нужно установить?

Спасибо!


person silviu    schedule 05.07.2016    source источник


Ответы (2)


Я предполагаю, что это связано с тем, что служебный аккаунт (документы GCS), который вы создали для использования Cloud Vision API и Firebase Storage (просто корзина Google Cloud Storage) вместе могут не охватывать использование их обоих. Как вы создали свой сервисный аккаунт? Согласно этим инструкциям (документы Cloud Vision) ?

Вы можете решить эту проблему, создав учетную запись службы с разрешениями на чтение вашей корзины (убедитесь, что роль IAM включает объект GET). Возможно, вам также придется добавить эту учетную запись службы в корзину по умолчанию и списки управления доступом к объектам, если это еще не сделано (обычно они добавляются, если созданы с правильной ролью IAM для корзины, но лучше проверить).

FWIW, У меня есть проект, который делает именно это, поэтому я удивлен, что учетная запись службы по умолчанию не будет работать для обеих этих вещей.

person Mike McDonald    schedule 06.07.2016
comment
Привет Майк, спасибо за ответ. Я проверю документы служебной учетной записи и инструкции, которые вы опубликовали. Я проверил ваши Flaming Specs и понял, что он создает новый файл из фотографии Firebase и передает этот файл в Cloud Vision. Я хотел более простое решение, которое просто ссылается на образ Firebase. - person silviu; 06.07.2016
comment
Я создал учетную запись службы, выполняя руководство по Cloud Vision API. Я предоставил этой учетной записи доступ для чтения к корзине Firebase. Играя с Google API Explorer, я заметил, что если я запускаю аутентифицированные запросы (под своей учетной записью), то это работает. Но мне еще предстоит выяснить, как аутентифицировать запросы с учетной записью службы. - person silviu; 07.07.2016

Мне удалось временно исправить проблему, предоставив разрешение Reader всем пользователям в корзине, а также права доступа по умолчанию для объекта.

person silviu    schedule 07.07.2016