为什么 Google 的自定义搜索 API 在使用 Ruby 客户端时提示我缺少访问令牌?

发布于 2024-12-13 18:16:04 字数 687 浏览 1 评论 0 原文

我正在尝试通过 Google 的自定义搜索 API “http://code.google.com/p/google-api-ruby-client/” rel="nofollow">Google API Ruby 客户端。我已经通过 Google API 控制台设置了我的 API 密钥,并且还创建了我的 CSE。根据文档,似乎只要我提供 API 密钥(我正在这样做),我就不需要 OAuth2 身份验证令牌来调用列表方法。但是,当我尝试执行下面的代码时,出现以下错误:

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'
)

I'm trying to use Google's Custom Search API through the Google API Ruby client. I have setup my API key through the Google API console, and have also created my CSE. Based on the documentation, it seems that, as long as I provide an API key (which I am doing), I shouldn't need an OAuth2 authentication token to call the list method. However, when I try to execute the code below, I get the following error:

ArgumentError: Missing access token.

What am I missing? Here's my code:

# 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'
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只等公子 2024-12-20 18:16:04

我相信这实际上是客户端中的一个错误(它是 alpha 版本)。经过一番摆弄后,我找到了一个解决方法:

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

client.authorization.access_token = '123'

然后您可以调用 search.cse.list 方法,而不会出现“ArgumentError:缺少访问权限”令牌。错误。

I believe this is in fact a bug in the client (it's in alpha). After fiddling with it a little more, I've found a workaround:

just after creating the client object, assign it a "dummy" access token:

client.authorization.access_token = '123'

then you can call the search.cse.list method without getting the 'ArgumentError: Missing access token.' error.

睡美人的小仙女 2024-12-20 18:16:04

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

If you're just after using Google CSE with ruby, try google-cse. I just built the gem, although I've been using it for a while privately. Much easier to work with than the alpha client

萌辣 2024-12-20 18:16:04

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

I found out that adding client.retries = 3 to my code solves this problem.

红衣飘飘貌似仙 2024-12-20 18:16:04

当前版本的gem(0.7.1),除了设置key之外,还需要将授权设置为nil

require 'google/api_client'

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

client.execute ...

With the current version of the gem (0.7.1), you need to set the authorization to nil in addition to setting the key:

require 'google/api_client'

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

client.execute ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文