为什么 Google 的自定义搜索 API 在使用 Ruby 客户端时提示我缺少访问令牌?
我正在尝试通过 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'
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我相信这实际上是客户端中的一个错误(它是 alpha 版本)。经过一番摆弄后,我找到了一个解决方法:
在创建客户端对象后,为其分配一个“虚拟”访问令牌:
然后您可以调用 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:
then you can call the search.cse.list method without getting the 'ArgumentError: Missing access token.' error.
如果您刚刚将 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
我发现在我的代码中添加
client.retries = 3
可以解决这个问题。I found out that adding
client.retries = 3
to my code solves this problem.当前版本的gem(0.7.1),除了设置key之外,还需要将授权设置为
nil
:With the current version of the gem (0.7.1), you need to set the authorization to
nil
in addition to setting the key: