请求谷歌云存储java客户端API

时间:2014-05-13 00:51:51

标签: google-api-java-client

我花了两天时间但仍然无法使用我的java代码来阅读或列出Google云端存储中的对象。我非常渴望得到你的帮助。案例是:我的客户给了我projectID,Bucket Name和gs_oauth2_refresh_token。当我将projectId和gs_oauth2_refresh_token放在.boto文件中时,我可以使用python很好地访问数据。但是现在我正在尝试使用java来访问这些数据。我在互联网上搜索了很多页面但我找不到任何正确的指令。甚至谷歌云主页​​都含糊不清,请帮我搞清楚。提前谢谢!

以下是我的代码:

 public class GCSClient {
private static String APPLICATION_NAME = "MyTestDfaDownloader/1.0";
private static String SERVICE_ACCOUNT_EMAIL = "jack.wang@at.com";
private static String BUCKET_NAME = "****";//the google cloud storage bucket name
private static String OAUTH2_CLIENT_ID = "****";
private static String OAUTH2_CLIENT_SECRET= "***";
private static String OAUTH2_REFRESH_TOKEN="***";//this key we also used in python boto file

private static FileDataStoreFactory dataStoreFactory;
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static HttpTransport httpTransport;
private static Storage storage;
private static final java.io.File DATA_STORE_DIR =
new java.io.File(System.getProperty("user.home"), ".store/storage_sample");

public static void main(String[] args) {
    try {
        GCSClient test = new GCSClient();
        test.init();

        test.describe(BUCKET_NAME);//test

    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static void init() {
    try {
        httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
        Credential credential = authorize();        
        storage = new Storage.Builder(httpTransport, JSON_FACTORY, 
                new GoogleCredential().setAccessToken(OAUTH2_REFRESH_TOKEN)).setApplicationName(APPLICATION_NAME).build();
    } catch (Exception e) {
        e.printStackTrace();
    } 
}

private static Credential authorize() throws Exception {
    Set<String> scopes = new HashSet<String>();
    scopes.add(StorageScopes.DEVSTORAGE_READ_ONLY);
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, JSON_FACTORY,
            OAUTH2_CLIENT_ID, OAUTH2_CLIENT_SECRET, scopes).setDataStoreFactory(dataStoreFactory).setAccessType("offline").build();
    // Authorize.
    return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
}

public static void describe(String Bucket) {
    try {
        // Get metadata about the specified bucket.
        Storage.Buckets.Get getBucket = storage.buckets().get(BUCKET_NAME);
        getBucket.setProjection("full");
        Bucket bucket = getBucket.execute();
        System.out.println("name: " + BUCKET_NAME);
        System.out.println("location: " + bucket.getLocation());
        System.out.println("timeCreated: " + bucket.getTimeCreated());
        System.out.println("owner: " + bucket.getOwner());
    } catch (Exception e) {
        e.printStackTrace();
    }   
}

}

非常感谢! 千斤顶

0 个答案:

没有答案