2012-12-15 62 views
1

我想沒有的Oauth訪問谷歌的API客戶端(紅寶石).. 我發現這個信息的Oauth(只是API密鑰):如何訪問谷歌的客戶端API不

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

簡而言之,所有基於發現的API都需要識別您的呼叫。您遇到的錯誤是我通常在Google API無法識別您的應用時看到的錯誤。通常你可以打幾個不明身份的電話,但你幾乎肯定會很快遇到低得多的「不明身份」配額。您可以使用OAuth(可識別您的應用)進行身份驗證,也可以指定API密鑰(可識別您的應用),也可以同時執行這兩種操作。

這是通過設置client.key = "<your api key>"或將它傳遞到客戶端構造函數完成的(如您所做的那樣)。您應該也可以設置client.user_ip = request.remote_ip(或者在您選擇的框架中獲取客戶端的IP地址),特別是如果您未使用OAuth進行身份驗證。

看起來您已經在示例中設置了API密鑰,但可能是因爲錯誤的API項目存在拼寫錯誤或密鑰,或者您正在運行每個用戶的限制, user_ip將解決。另一個重要的理解是,配額可以按照每天查詢來指定,但是然後在每分鐘或每小時或者在某個其他時間段被強制執行。所以你可能有10k QPD配額,但這只是415 QPH或7 QPM。我不知道YouTube的配額是如何執行的,但需要注意的是。

你應該不需要做的一件事是將:key設置爲:parameters參數給你的API調用。如果您想根據每個請求進行設置,則直接作爲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" 
    } 
) 
0

在API控制檯中是一個Quotas Pane,它會告訴你每日對於該關鍵API密鑰的限制。你在重複使用別人的鑰匙嗎?如果您沒有提供帳單信息(或者它可能只是通過oAuth工作的資源),則此限制也可能較低。

+0

沒有它新鮮的API,配額是不錯的。它還表示「未經驗證」使用,這表明基於密鑰的登錄沒有發生。但是,如何在沒有oauth的情況下登錄> – Stpn

相關問題