图片搜索示例通过Rails Google API客户端

时间:2015-01-29 00:09:15

标签: google-app-engine ruby-on-rails-4 google-api-client google-custom-search

我需要在我的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

思考?

2 个答案:

答案 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文档似乎非常适合为您的网站设置自定义搜索引擎。

Google Developers - Creating a Custom Search Engine