2017-10-16 11 views
0

J'essaie d'obtenir la liste des seaux dans mon projet de cloud Google en utilisant le compte de service.Google cloud storgae - Bucket list error: 403 Interdit

est le programme ici:

package com.mypackage.api; 

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; 
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson2.JacksonFactory; 

import java.io.IOException; 
import java.security.GeneralSecurityException; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

import com.google.api.services.storage.Storage; 
import com.google.api.services.storage.StorageScopes; 
import com.google.api.services.storage.model.Bucket; 

public class TestClass { 
    public static void main(String args[]) throws IOException, GeneralSecurityException { 
     String project = "my-project"; 

     Storage storage = createStorageService(); 
     List<String> list = new ArrayList<String>(); 
     List<Bucket> buckets = storage.buckets().list(project).execute().getItems(); 
     if(buckets != null) { 
      for(Bucket b : buckets) { 
       list.add(b.getName()); 
      } 
     } 


    } 

    public static Storage createStorageService() throws IOException, GeneralSecurityException { 
     HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
     JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 


     GoogleCredential credential = GoogleCredential.getApplicationDefault(); 
     if (credential.createScopedRequired()) { 
      credential = credential.createScoped(Arrays.asList(StorageScopes.DEVSTORAGE_FULL_CONTROL, "https://www.googleapis.com/auth/cloud-platform")); 
     } 

     return new Storage.Builder(httpTransport, jsonFactory, 
       credential).setApplicationName("My Application") 
       .build(); 

    } 
} 

Et j'ai eu l'erreur ci-dessous:

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "[email protected] does not have storage.buckets.list access to project 333XXXXX67.", 
    "reason" : "forbidden" 
    } ], 
    "message" : "[email protected] does not have storage.buckets.list access to project 333XXXXX67." 
} 

J'ai ajouté la portée "propriétaire" à mon compte de service. Mais je reçois toujours une erreur d'autorisation refusée.

Toute aide est appréciée.

Répondre

0

Vérifiez vos informations d'identification. Êtes-vous sûr que credential.createScopedRequired() est vrai, et credentional obtenir les étendues requises pour lire les informations? Par exemple https://www.googleapis.com/auth/devstorage.read_only. Une telle réponse (403) signifie que vous n'avez pas la permission.

0

J'ai corrigé cette erreur en modifiant le fichier de type des informations d'identification. Initialement, j'ai pris le fichier d'application Web, c'est pourquoi j'ai eu cette erreur. Merci d'avoir répondu à ma question.