1

Java アプリケーションから Google ドライブにファイルを挿入して読み取るには、Google ドライブ API を使用する必要があります。サービス アカウントを使用します。

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 driveService = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, null)
            .setHttpRequestInitializer(credential)
            .build();

これは問題なく動作します。Google ドライブでファイルを挿入、共有、読み取ることができます。

私の問題は、Google API コンソールで 2 つ目のプロジェクトを作成し、同じ手順を実行しましたが、機能しないことです。私の 2 つのプロジェクトは同じように見えますが、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 か月前に作成されましたが、2 番目のプロジェクト (うまくいきません) は最近作成されました。

このエラーの詳細を取得するにはどうすればよいですか? この問題の原因は何ですか?

4

1 に答える 1