2

OauthなしでGoogleAPIクライアント(Ruby)にアクセスしようとしています。次の情報を見つけました。

http://thecodeabode.blogspot.com.au/2012/07/google-api-ruby-client-authorizing-with.html

しかし、残念ながら、私が指示に従うと(これが私がすることです):

 require 'google/api_client'
 client = Google::APIClient.new(:key => "MYKEY",:authorization => nil)    
 yt = client.discovered_api("youtube", "v3")
 result = client.execute(
   :api_method => yt.search.list,
   :parameters => {
     :key => "MYKEY",
     :q => "dogs",
     :part => "topicDetails"
   }
 )

私は得る

「認証されていない使用の1日あたりの制限を超えました。継続して使用するにはサインアップが必要です」

なにが問題ですか?

4

2 に答える 2

1

簡単に言えば、検出ベースの API はすべて、呼び出しを識別する必要があります。あなたが得ているエラーは、Google API がアプリを識別できないときに私が通常目にするものです。通常、少数の身元不明の呼び出しを行うことができますが、ほぼ確実に、はるかに低い「身元不明」のクォータにすぐに遭遇します。OAuth (アプリを識別する) で認証するか、API キー (アプリを識別する) を指定するか、または両方を行うことができます。

これは、設定するclient.key = "<your api key>"か、クライアント コンストラクターに渡すことによって行われます (既に行ったように)。client.user_ip = request.remote_ip特にOAuthで認証していない場合は、おそらく設定する必要があります(または、選択したフレームワークでクライアントのIPアドレスを取得するものは何でも)。

例から既に API キーを設定しているようですが、入力ミスや間違った API プロジェクトからのキーがあるか、ユーザーごとの制限に達している可能性がありuser_ipます。理解することが重要なもう 1 つのことは、クォータは 1 日あたりのクエリに関して指定される場合がありますが、その後は 1 分ごと、1 時間ごと、または他の期間にわたって適用されるということです。したがって、10,000 QPD のクォータがあるかもしれませんが、それは 415 QPH または 7 QPM にすぎません。YouTube の割り当てがどのように適用されるかはわかりませんが、覚えておくべきことです。

行う必要のないことの 1 つは、API 呼び出し:keyの引数に を設定することです。:parametersリクエストごとに設定する場合は、別のオプション パラメータとして に直接渡されますexecute。あなたの場合、それはクライアントによって自動的に処理されるべきです。コンストラクターで既に設定しているため、コードから削除するのがおそらく最善です。

最終結果は次のようになります。

require 'google/api_client'
client = Google::APIClient.new(:key => "MYKEY", :authorization => nil)    
yt = client.discovered_api("youtube", "v3")
result = client.execute(
  :api_method => yt.search.list,
  :authenticated => false,
  :user_ip => request.remote_ip,
  :parameters => {
    :q => "dogs",
    :part => "topicDetails"
  }
)
于 2012-12-16T13:44:43.977 に答える
0

API コンソールには、特定の API キーの 1 日あたりの制限を示すクォータ ペインがあります。他人の鍵を再利用していませんか?請求情報を提供していない場合 (または、oAuth でのみ機能するリソースである可能性もあります)、制限が低くなる可能性もあります。

于 2012-12-15T05:35:12.053 に答える