Ошибка при использовании FIREBASE STORAGE во флаттере с использованием HTTP REST api - PullRequest
1 голос
/ 14 июля 2020

Я получаю сообщение об ошибке при вставке файла изображения в Firebase Stroage. Я использую HTTP rest api для того же.

Код выглядит следующим образом:

Future<void> upload(Image image2) async {
var accountCredentials = ServiceAccountCredentials.fromJson({
 "private_key_id": " ",
 "private_key": " ",
 "client_email":"< >.iam.gserviceaccount.com",
 "client_id": "",
 "type": "service_account"
});

var scopes = [
 'https://www.googleapis.com/auth/cloud-platform',
];

 var client = Client();
 AccessCredentials credentials =
     await obtainAccessCredentialsViaServiceAccount(accountCredentials, scopes, client);
     String accessToken = credentials.accessToken.data;

var request = Request(
   'POST',
    Uri.parse(
      'https://www.googleapis.com/upload/storage/v1/b/mybucket/o?uploadType=media&name=$image2'),
    );
    request.headers['Authorization'] = "Bearer $accessToken";
    request.headers['Content-Type'] = "image/png";


Response response = await Response.fromStream(await request.send());
print("response is ");
print(response.statusCode);
print("response body");
print(response.body);
client.close();
}

Ошибка выглядит следующим образом:

 {
         "error": {
           "code": 403,
           "message": "< >.iam.gserviceaccount.com does not have storage.objects.create access  
                       to the Google Cloud Storage object.",
           "errors": [
             {
               "message": "< >.gserviceaccount.com does not have storage.objects.create access to the
                           Google Cloud Storage object.",
               "domain": "global",
               "reason": "forbidden"
             }
           ]
         }
       }

Я дал разрешение storage.objects.create через управление службами IAM, но это не работает

Щелкните здесь, чтобы просмотреть снимок экрана назначенного разрешения

...