4

公式の Java サンプルを使用して、Google Drive API に慣れようとしています。しかし、数時間を無駄にしてサンプルを 2 回セットアップしようとした後でも、期待どおりに使用できません。

ファイルのコンテンツを表示する代わりに、FileServlet (/svc パス) で 404 エラーをスローします。具体的には、 service.files().get(fileId).execute();null を返すようです。Googleドライブから直接、Googleファイルピッカーを使用して、さまざまなファイル、さまざまなMIMEタイプで試しました。

https://developers.google.com/drive/examples/javaで説明されている手順にできるだけ厳密に従いました。

サンプルを実行できた人はいますか?

編集: URL を要求したときの FileServlet のログ出力は次のとおり/svc?file_id=0B08R9MrOE-ejZTY2M2I5MjAtYmVjZS00OTkyLWI4ZTEtOTg4OGM3YTIxMWEwです (78 行目で 404 エラーがスローされます)。

2012-04-26 08:21:36.077
com.google.api.client.http.HttpRequest execute: -------------- REQUEST  --------------
GET https://www.googleapis.com/drive/v1/files/0B08R9MrOE-ejZTY2M2I5MjAtYmVjZS00OTkyLWI4ZTEtOTg4OGM3YTIxMWEw
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.8.3-beta (gzip)

D 2012-04-26 08:21:36.263
com.google.api.client.http.HttpResponse <init>: -------------- RESPONSE --------------
403 OK
content-type: application/json; charset=UTF-8
content-encoding: gzip
date: Thu
date: 26 Apr 2012 06:21:36 GMT
expires: Thu
expires: 26 Apr 2012 06:21:36 GMT
cache-control: private
cache-control: max-age=0
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
content-length: 188
server: GSE
x-google-cache-control: remote-fetch
via: HTTP/1.1 GWA

D 2012-04-26 08:21:36.265
com.google.api.client.http.HttpResponse getContent: Response size: 188 bytes
D 2012-04-26 08:21:36.271
com.google.api.client.http.HttpResponse getContent: {
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit Exceeded. Please sign up",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit Exceeded. Please sign up"
 }
}

これは私には「あなたを知らない」ように聞こえるので、クライアント ID とクライアント シークレットをもう一度見てみました。API コンソールに 2 つのクライアント ID とクライアント シークレットが表示されていることに気付きました。 1 つは「Web アプリケーションのクライアント ID」、もう 1 つは「Drive SDK のクライアント ID」です。以前はWebアプリ用を使っていたので、Drive SDK用に切り替えてみました。残念ながら、これは何も変わりません。同じエラー... :/

4

4 に答える 4

7

ログによると、404エラーは、ドライブAPIへのリクエストで返された403エラーが原因であると思われます。

Google APIからのエラーには、通常、本文に説明が含まれています。あなたの場合:

"error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit Exceeded. Please sign up",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit Exceeded. Please sign up"
 }
}

これは通常、GoogleAPIコンソールプロジェクトでGoogleドライブAPIへのアクセスを有効にしていないことを意味します。これを行うためには:

  • GoogleAPIコンソールでプロジェクトを開きます
  • サービスセクションに移動します
  • オン/オフトグルをクリックして、ドライブSDKドライブAPIを有効にします
  • ドライブSDKセクションでアプリを構成し、**APIアクセス"セクションでOAuth設定を構成することを忘れないでください

これはすべて、ドキュメントの「はじめに」>「アプリの登録」セクションで説明されています。また、 「はじめに」の他のサブセクションも必ず実行する必要があります。

于 2012-04-26T07:57:29.980 に答える
1

私の経験では、「403 Quota Exceeded」は常に HTPP Authorization ヘッダーが設定されていないことに起因します。

于 2012-09-20T14:31:10.887 に答える
1

私は最終的にそれを機能させることができました。以前に何が問題だったのかはわかりませんが、同様の問題に直面している方のためにいくつかのヒントを以下に示します。

  • 「Web アプリケーションのクライアント ID」と「ドライブ SDK のクライアント ID」に混乱しました。残念ながら、ドキュメントにはどの場所でどちらを使用するかは記載されていませんが、「Web アプリケーションのクライアント ID」のみが必要なようです。

  • Chrome 拡張機能または API コンソールを更新すると、ドライブがそれらの変更を認識するまでに時間がかかる場合があります。たとえば、API コンソールで OAuth クライアント ID を変更すると、変更が反映されるまでに時間がかかる場合があります。これは、全員がキャッシュしているためです。アプリケーションをテストしている場合は、キャッシュと Cookie を削除するとプロセスが高速化されます。

あなたのアプリケーションで頑張ってください、そして私を助けてくれたみんなに感謝します!

于 2012-05-01T10:17:20.497 に答える