GoogleAppEngineで提供されるAppIdentityインターフェースを介してGoogleDriveAPIを使用しようとしています。これにより、基本的に、私のWebアプリケーションがサーバー間でGoogleのAPIと通信できるようになります。
ユーザーがログインする必要はありません。自分のGoogleドライブドキュメントを表示するだけです。
ただし、適切な値とスコープをすべて設定し、コンソールページで適切なGoogleドライブのノブをすべて有効にした後でも、次の単純なGETリクエストでこれを取得できますhttps://www.googleapis.com/drive/v2/files
。
{ "error": { "errors": [ { "domain": "usageLimits", "reason": "dailyLimitExceededUnreg", "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.", "extendedHelp": "https://code.google.com/apis/console" } ], "code": 403, "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup." }}
どうしたの?私は何が欠けていますか?実際にリクエストを実行するコードは次のとおりです。面白いことに、URL短縮APIなどの他のAPIを使用するとうまく機能します。
var scopes = new java.util.ArrayList();
scopes.add("https://www.googleapis.com/auth/drive");
var appIdentity = AppIdentityServiceFactory.getAppIdentityService();
var accessToken = appIdentity.getAccessToken(scopes);
var url = new URL("https://www.googleapis.com/drive/v2/files");
var connection = url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("GET");
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("Authorization", "OAuth " + accessToken.getAccessToken());
編集
たとえば、APIを変更してAPIを使用するとurlshortner
、次のように機能します。
var url = new URL("https://www.googleapis.com/urlshortener/v1/url/history");
そして出力:
{ "kind": "urlshortener#urlHistory", "totalItems": 0, "itemsPerPage": 30}
では、GoogleドライブとアプリIDで機能しないものがあるはずですか?
編集2
私はここで正しい答えからいくつかの助けを見つけました:https ://stackoverflow.com/a/12526286/50394
しかし、それはGoogle AppsでのクライアントAPIスコープの設定について話しているので、私はGoogle Appsを使用しておらず、単にGoogleAppEngineのドメインを使用しています。foo.appspot.com