4

我正在尝试通过Google API Ruby 客户端使用Google 的自定义搜索 API。我已经通过 Google API 控制台设置了我的 API 密钥,并且还创建了我的 CSE。根据文档,似乎只要我提供 API 密钥(我正在这样做),我就不需要 OAuth2 身份验证令牌来调用 list 方法。但是,当我尝试执行下面的代码时,出现以下错误:

ArgumentError:缺少访问令牌。

我错过了什么?这是我的代码:

# create client
client = Google::APIClient.new

# Fetch discovery doc
search = client.discovered_api('custom search')

# Call list method
response = client.execute(
  search.cse.list, 'key' => '<my API key>', 'cx' => '<my CSE id>', 'alt' => 'json', 'q' => 'hello world'
)
4

4 回答 4

2

我相信这实际上是客户端中的一个错误(它处于 alpha 阶段)。再摆弄它之后,我找到了一个解决方法:

在创建客户端对象后,为其分配一个“虚拟”访问令牌:

client.authorization.access_token = '123'

那么您可以调用 search.cse.list 方法而不会收到“ArgumentError:缺少访问令牌”。错误。

于 2011-11-07T17:21:56.947 回答
0

nil使用当前版本的 gem (0.7.1),除了设置密钥之外,您还需要设置授权:

require 'google/api_client'

client = Google::APIClient.new
client.key = ENV['GOOGLE_API_KEY']
client.authorization = nil

client.execute ...
于 2014-11-11T21:11:09.097 回答
0

如果您刚刚将 Google CSE 与 ruby​​ 一起使用,请尝试google-cse。我刚刚构建了 gem,虽然我已经私下使用了一段时间。比 alpha 客户端更容易使用

于 2013-02-07T12:14:26.663 回答
0

我发现添加client.retries = 3到我的代码中可以解决这个问题。

于 2014-11-06T12:01:54.127 回答