我需要在我的rails应用中复制“在Google上搜索此图片”,其中对应用中的图片执行图片搜索。我正在使用google-api-ruby-client gem。为了测试api,我开始使用简单的查询搜索:
尝试使用常规搜索字词,但 invalid_scope 错误。
client = Google::APIClient.new application_name: 'xxx', application_version: '1.0'
keypath = Rails.root.join('config', 'privatekey.p12').to_s
key = Google::APIClient::PKCS12.load_key(keypath, 'notasecret')
client.authorization = Signet::OAuth2::Client.new(
:token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
:audience => 'https://accounts.google.com/o/oauth2/token',
:scope => 'https://www.googleapis.com/customsearch/v1',
:issuer => 'xxx@developer.gserviceaccount.com',
:signing_key => key
).tap { |auth| auth.fetch_access_token! }
api_method = client.discovered_api('customsearch', 'v1')
result = client.execute(:api_method => api_method, :parameters => {
'q' => 'Hello+World'
})
return result.data
思考?
答案 0 :(得分:1)
您的API调用似乎缺少必需的自定义搜索引擎ID。您需要使用cx或cref指定要使用的自定义搜索引擎。如果您还没有CSE ID,可以在此处获取:https://www.google.com/cse
获得CSE ID后,您需要将其包含在参数中。一种可能的方法是将它添加到您已经拥有的哈希...
result = client.execute(:api_method => api_method, :parameters => {'cx' => 'YOUR_CSE_ID', 'q'=> 'Hello+World'}
您的实际URI结构应如下所示:
https://www.googleapis.com/customsearch/v1?key=YOUR_API_KEY&cx=YOUR_CSE_ID&q=Hello+World
这是另一个很好的参考:https://developers.google.com/custom-search/docs/api
答案 1 :(得分:0)
不幸的是,我没有使用自定义搜索引擎的经验,但我找到了一个我认为可以帮助您找到正确答案的链接。此Google Dev文档似乎非常适合为您的网站设置自定义搜索引擎。