下午好!
我有困难访问谷歌团队驱动器。
我需要从本地存储创建文件夹和上传文件,所有这些都应该由我的应用程序来完成。
目前,我已经学会了连接到我的个人谷歌驱动器和上传文件那里。我的连接到个人存储的代码:
Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) //
.setApplicationName(APPLICATION_NAME).build();
// Print the names and IDs for up to 10 files.
FileList result = service.files().list().setPageSize(10).setFields("nextPageToken, files(id, name)").execute();
List<File> files = result.getFiles();
if (files == null || files.isEmpty()) {
System.out.println("No files found.");
} else {
System.out.println("Files:");
for (File file : files) {
System.out.printf("%s (%s)\n", file.getName(), file.getId());
}
}
告诉我,如何在java中连接到并在那里上传文件?谢谢您:)
发布于 2020-04-02 16:44:47
使用java中的服务帐户连接到team驱动器
假设您已经满足了先决条件,这是
创建Google服务account
的用户。
您的代码应该如下所示:
private static final String APPLICATION_NAME = "YOUR APPLICATION";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final List < String > SCOPES = Collections.singletonList("XXXINSERTHEREYOURSCOPEXXXX");
public static void main(String...args) throws IOException, GeneralSecurityException {
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
File pk12 = new File("quickstartserv.p12");
String serviceAccount = "EMAIL FO YOUR SERVICE ACCOUNT.iam.gserviceaccount.com";
// Build service account credential.Builder necessary for the ability to refresh tokens
GoogleCredential getCredentials = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(serviceAccount)
.setServiceAccountPrivateKeyFromP12File(pk12)
.setServiceAccountScopes(SCOPES)
.setServiceAccountUser("xxx") //IF YOU WANT TO IMPERSONATE A USER
.build();
// Build a new authorized API client service.
Drive service = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials)
.setApplicationName(APPLICATION_NAME)
.build();
FileList result = service.files().list().setPageSize(10).setQ('"ID OF THE SHARED DRIVE" in parents').setIncludeTeamDriveItems(true).setSupportsTeamDrives(true).setFields("nextPageToken, files(id, name)").execute();
...
}
请注意,setIncludeTeamDriveItems(true)
和setSupportsTeamDrives(true)
是从共享驱动器检索文件所必需的。
https://stackoverflow.com/questions/60994563
复制相似问题