我正在尝试使用Google's Custom Search API到the Google API Ruby client。我已通过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'
)
答案 0 :(得分:2)
我相信这实际上是客户端中的一个错误(它是alpha版本)。在摆弄了一点之后,我找到了一个解决方法:
在创建客户端对象之后,为其分配一个“虚拟”访问令牌:
client.authorization.access_token = '123'
然后你可以调用search.cse.list方法而不会得到'ArgumentError:Missing access token'。错误。
答案 1 :(得分:0)
如果您刚刚使用带有红宝石的Google CSE,请尝试使用google-cse。我刚刚建造了宝石,虽然我私下里已经使用了一段时间。比alpha客户端
更容易使用答案 2 :(得分:0)
我发现在我的代码中添加client.retries = 3
可以解决这个问题。
答案 3 :(得分:0)
使用当前版本的gem(0.7.1),除了设置密钥外,还需要将授权设置为nil
:
require 'google/api_client'
client = Google::APIClient.new
client.key = ENV['GOOGLE_API_KEY']
client.authorization = nil
client.execute ...