4

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"
}

なぜこれが機能しないのか理解できません。私は一日中オンラインで調べましたが、適切な答えを見つけることができません。いくつかの助けは非常にありがたいです。

4

2 に答える 2

2

したがって、pinoyyidの答えは、決定的な答えではありませんでしたが、役に立ちました。

私はそれを次のように解決することになりました:

AppID(xxxxx.apps.googleusercontent.com)を取得し、次のスコープでCPanel https://www.google.com/a/cpanel/ [[YOURDOMAIN]]/ManageOauthClientsに追加しました。

その後、ドライブ環境に対して認証された要求を行うことができました。現在、さまざまな問題のスタックに遭遇していますが、403は解決されました。

于 2012-09-21T07:46:48.730 に答える
1

API呼び出しでAuthorizationhttpヘッダーが欠落していると、通常403が返されます。httpをトレースし、ヘッダーを確認します。「quota」メッセージの理論的根拠は、Authヘッダーがないと匿名であり、匿名使用のクォータはゼロであるということです。

同じ問題が発生する可能性があると聞いているので、アプリが両方のDriveAPIに登録されていることを確認することもできます。

内部メソッドの問題では、互換性のないライブラリバージョンを使用しているようです。私にとって最も効果的なのは、サンプルコードでダウンロードしたすべてのライブラリを削除してから、GoogleEclipseプラグインを使用して「Google/GoogleAPIを追加...」して最新バージョンをすべてダウンロードすることでした。

于 2012-09-20T01:42:34.177 に答える