我需要使用 Google Drive API 从我的 Java 应用程序中插入和读取 Google Drive 中的文件。我使用服务帐户。
我在我的 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 Drive 中插入、共享、读取文件。
我的问题是我在我的 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 个月前创建的,而第二个(没有工作)是最近创建的。
如何获取有关此错误的更多详细信息?什么会导致这个问题?