gpt4 book ai didi

google-drive-api - Google Drive API 上传返回文件 ID/标题,但文档在云端硬盘中不存在

转载 作者:行者123 更新时间:2023-12-01 23:33:50 26 4
gpt4 key购买 nike

我已经按照 Google Drive SDK 网站上给出的示例通过服务帐户进行授权 (https://developers.google.com/drive/service-accounts) 并插入一个文件 (https://developers.google .com/drive/v2/reference/files/insert)。我已经设法使用带有 oauth2 的客户端 ID/客户端密码让它工作,但需要自动化,所以想使用私钥。

我的问题是我得到了一个文件 ID、标题、描述和 MIME 类型作为返回,例如文件 ID:%s0B6ysbMIcH3AGWHJPRmZUTVZZMnM,标题:我的文档,描述:测试文档,MIME 类型:文本/纯文本,但该文档不存在于驱动器中,并且未返回任何错误。

我已经为此工作了 2 天,但没有成功,非常感谢任何帮助。我在网上看过,我找到的例子类似于下面的例子。我尝试了多个 Google 帐户(一个是公司 Google Apps,另一个是普通的 gmail 帐户,结果相同)。

代码(更改了帐户信息):

public class AutoGoogleDrive {

private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "/home/jsmith/Java/11111111111111111111111111-privatekey.p12";
private static final String SERVICE_ACCOUNT_EMAIL = "1111111111111@developer.gserviceaccount.com";


public static Drive getDriveService() throws GeneralSecurityException,
IOException, URISyntaxException {
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountScopes(DriveScopes.DRIVE_FILE)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
.build();
Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(credential).build();
return service;
}

public static void main(String[] args) throws IOException {


Drive service = null;
try {
service = getDriveService();
} catch (GeneralSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


//Insert a text file
File body = new File();
body.setTitle("My document");
body.setDescription("A test document");
body.setMimeType("text/plain");

// File's content.
java.io.File fileContent = new java.io.File("/home/jsmith/document.txt");
FileContent mediaContent = new FileContent("text/plain", fileContent);
try {
File file = service.files().insert(body, mediaContent).execute();

// Uncomment the following line to print the File ID.
System.out.println("File ID: %s" + file.getId());
System.out.println("Title: " + file.getTitle());
System.out.println("Description: " + file.getDescription());
System.out.println("MIME type: " + file.getMimeType());

} catch (IOException e) {
System.out.println("An error occured: " + e);
}

}
}

谢谢,

乔·史密斯

最佳答案

当使用服务帐户时,插入的文件将被添加到没有 Drive UI 的应用程序的 Drive 帐户中。这些文件只能通过 API 获得。

关于google-drive-api - Google Drive API 上传返回文件 ID/标题,但文档在云端硬盘中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13293698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com