GoogleドキュメントをGoogleドライブに書き込み、特定のフォルダセットを配置し、アクセス権を設定するAppEngineアプリを作成しようとしています。私はこれを古いDocsListAPIで動作させていますが、それが廃止されたばかりなので、コードを更新することにしました(とにかく追加するいくつかの追加関数がありました)。
私が直面している問題は次のとおりです。サービスアカウントを使用して特定のユーザーになりすまそうとすると、クォータを使い切っていないのに、usageLimitsを含む403が表示されます。
これが私が使用しているコードです:
GoogleCredential credentials = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("xxxxxxxxxxgserviceaccount.com")
.setServiceAccountScopes(DriveScopes.DRIVE)
.setServiceAccountPrivateKeyFromP12File(
new java.io.File("xxxx-privatekey.p12"))
.setServiceAccountUser("user@xxxxxx.org").build();
次に、これらのクレデンシャルを使用してドライブオブジェクトを開始します。
Drive d = Drive.builder(httpTransport, jsonFactory)
.setHttpRequestInitializer(credentials)
.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
DriveRequest driveRequest = (DriveRequest) request;
driveRequest.setPrettyPrint(true);
}
}).setApplicationName("MYAPPNAME").build();
ところで:私は新しいドライブ(....)を使用しようとしましたが、何を試しても機能しません。内部メソッドが見つからないというエラーをスローし続けます!
この問題に戻る:「d」を使用して.files()。get( "SOMEFILEID")。execute()のようなものを呼び出すと、403が返されます。
{ "code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Daily Limit Exceeded. Please sign up",
"reason" : "dailyLimitExceededUnreg",
"extendedHelp" : "https://code.google.com/apis/console"
} ],
"message" : "Daily Limit Exceeded. Please sign up"
}
なぜこれが機能しないのか理解できません。私は一日中オンラインで調べましたが、適切な答えを見つけることができません。いくつかの助けは非常にありがたいです。