使用服务帐户在Google云端硬盘中插入文档时出错500

时间:2013-03-07 10:37:03

标签: google-drive-api

我需要使用Google Drive API从我的Java应用程序插入和读取Google云端硬盘中的文件。我使用的是服务帐户。

我在Google API控制台中创建了一个项目,启用了“Drive API”服务,创建了一个新的服务帐户,并在我的应用程序中使用了下载的私钥:

GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(HTTP_TRANSPORT)
            .setJsonFactory(JSON_FACTORY)
            .setServiceAccountId(this.serviceEmail)
            .setServiceAccountScopes(DriveScopes.DRIVE)
            .setServiceAccountPrivateKeyFromP12File(new java.io.File(this.privateKeyFilePath))
            .build();

然后我的Drive服务实例化为:

Drive driveService = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, null)
            .setHttpRequestInitializer(credential)
            .build();

这很好用,我可以在Google云端硬盘中插入,分享,阅读文件。

我的问题是我在Google API控制台中创建了第二个项目,执行了相同的步骤,但无法使其正常工作。我的2个项目看起来完全相同,但是第二个项目在尝试插入新文档时总是有错误响应:

com.google.api.client.http.HttpResponseException: 500 Internal Server Error
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "internalError",
    "message": "Internal Error"
   }
  ],
  "code": 500,
  "message": "Internal Error"
 }
}

at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:978)
at com.google.api.client.googleapis.media.MediaHttpUploader.upload(MediaHttpUploader.java:237)
at com.google.api.services.drive.Drive$Files$Insert.executeUnparsed(Drive.java:309)
at com.google.api.services.drive.Drive$Files$Insert.execute(Drive.java:331)

第一个项目已于6个月前创建,而第二个项目(不会被破坏)最近已创建。

如何获取有关此错误的更多详细信息?什么可能导致这个问题?

1 个答案:

答案 0 :(得分:0)

此问题可能是由错误的文件格式引起的。 尝试直接在Google云端硬盘中上传文件并获取更详细的消息。 我有以下消息: “上传的文件格式规范错误 - 例如,您可能尝试将CS​​V文件上传为XLS文件。”

但是,我不知道如何通过API获取有关错误的更多详细信息。如果有人知道,请告诉我!