【问题标题】:Using the Google Custom Search API with Ruby google-api-client将 Google 自定义搜索 API 与 Ruby 一起使用 google-api-client
【发布时间】:2011-06-09 13:05:04
【问题描述】:

作为我目前参与的人员搜索项目的一部分,我需要编写一个 ruby​​ 脚本,该脚本可以将搜索查询发送到 Google 自定义搜索 API 并存储搜索结果以供处理。我找到了 Ruby google-api-client gem (http://code.google.com/p/google-api-ruby-client/) 并安装了它,但是,尽管仔细阅读了文档,我还是不知所措关于如何执行自定义搜索 API 调用。这是我第一次尝试使用 Google API,我发现这个过程有点不知所措,有没有人有经验可以提供一些示例代码供我学习?谢谢

【问题讨论】:

    标签: ruby google-api-client


    【解决方案1】:

    虽然我还没有对此进行测试,但应该可以这样做:

    require 'google/api_client'
    # Creates an instance of the client.
    client = Google::APIClient.new
    # Authorization setup goes here.
    # Fetch the discovery document and obtain a reference to the API we care about.
    search = client.discovered_api('customsearch')
    # Make an API call using a reference to a discovered method.
    response = client.execute(
      search.cse.list, 'q' => 'your query'
    )
    status, headers, body = response
    

    请注意,我省略了所有用于身份验证的设置代码,您可以在 Ruby 客户端的文档中找到这些代码。

    【讨论】:

    • 我认为我陷入的困境是我不明白什么是发现文件。有什么资源可以了解它们以及我需要用它们做什么?
    • @Richard 我认为除了在 gem 文档中显示的构建查询之外,您不需要对它们做任何事情。看起来发现文档处理位都在 gem 中被抽象出来,但这里有一个解释它们是什么的链接:code.google.com/apis/discovery/v1/using.html#discovery-doc
    • 是的,本质上,它是一种以机器可读方式描述 API 的资源。这使客户端能够准确了解如何对特定 API 进行 API 调用。您只需要知道 API 的标识符和您要获得对发现文档的引用的目标版本。然后,您可以使用此发现文档参考来获取方法参考,然后将适当的参数传递给 API 调用。
    • 还值得注意的是,gem 附带的 google-api 命令允许您浏览任何给定 API 的发现文档的部分内容。
    • “我省略了所有用于身份验证的设置代码,您可以在 Ruby 客户端的文档中找到这些代码。” ...这些到底在哪里?我只能找到嗡嗡声和日历的身份验证示例,它们的不同之处似乎完全不清楚。
    【解决方案2】:

    使用 api 密钥与 the code abode 中概述的 OAuth 相比,在身份验证方面存在一些细节。

    你必须在构建客户端时明确地将授权参数设置为 nil,否则 gem 会尝试使用 OAuth 进行身份验证,因此如果仅使用 api 密钥从服务器调用,你将始终得到 401 Unauthorized。给出了使用 customsearch api 的完整代码(复制粘贴到 irb)。 the code abode - google-api-client for ruby

    【讨论】:

      【解决方案3】:

      https://developers.google.com/google-apps/calendar/firstapp

      这将引导您完成设置以访问 api 并在 google 的 api 控制台中设置密钥。 它有一个用于 ruby​​ 的选项卡 - 所以这是您开始使用的必要条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多