通过 Rails Google API 客户端的图像搜索示例
Image Search Example via Rails Google API Client
我需要在我的 rails 应用中复制“Search Google for this Image”,其中对应用中的图像执行图像搜索。我正在使用 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
想法?
不幸的是,我没有使用自定义搜索引擎的经验,但我确实找到了 link 我认为可以帮助您找到正确答案。 Google 开发文档似乎非常适合为您的站点设置自定义搜索引擎。
您的 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
我需要在我的 rails 应用中复制“Search Google for this Image”,其中对应用中的图像执行图像搜索。我正在使用 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
想法?
不幸的是,我没有使用自定义搜索引擎的经验,但我确实找到了 link 我认为可以帮助您找到正确答案。 Google 开发文档似乎非常适合为您的站点设置自定义搜索引擎。
您的 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