簡単に言えば、検出ベースの 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"
}
)