谷歌视觉APIHTTP禁止错误的原因?红宝石(轨道)



我一直在尝试让谷歌视觉API在我的rails应用程序中工作,但一直得到Net::HTTPForbidden响应。 我不太确定是什么原因造成的,因为我拥有的所有内容似乎都设置正确,我尝试生成新密钥但仍然收到相同的错误,任何帮助将不胜感激。 出于显而易见的原因,我在这篇文章中用"XXXXX_MY_API_KEY_XXXXX"替换了我的 API 密钥,所以这不是问题,也尝试直接粘贴图像 url 代替"img_url",所以我认为这与问题无关。

require 'net/http'
require 'uri'
require 'json'
def transcribe(img_url)
uri = URI.parse('https://vision.googleapis.com/v1/images:annotate?key=' + 'XXXXX_MY_API_KEY_XXXXX')
request = Net::HTTP::Post.new(uri)
request.content_type = 'application/json'
request.body = JSON.dump(
'requests' => [
{
'image' => {
'source' => {
'imageUri' => img_url
}
},
'features' => [
{
'type' => 'TEXT_DETECTION',
'maxResults' => 1,
'model' => 'builtin/latest'
}
]
}
]
)
req_options = {
use_ssl: uri.scheme == 'https'
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
p response
p response.code
p response.body 
end

好的,所以经过几个小时的混乱,我终于弄清楚了这个问题。 当您第一次尝试使用该 api 时,他们会向您返回一个链接,您必须访问该链接才能激活特定的 API(在我的情况下为视觉(,我无法通过 google 云控制面板上的 ui 找到此页面,只能通过链接。 即使 API 密钥处于活动状态且不受计费设置的限制,如果不激活特定 API,它也无法运行。 因为我注释掉了响应代码/正文,所以我只获得了 API 调用的状态代码,没有看到响应的其余部分,从而阻止我找到正确的激活链接。

这是我的判断失误,希望这能帮助任何遇到类似问题或希望将谷歌视觉 API 集成到 rails 应用程序中并偶然发现此线程的人,上面显示的代码工作完全正常,并且与客户端库相比,这是一种更简单的使用 API 的方法, 只需确保您已启用要使用的特定 API。 仅仅因为 API 密钥不受限制并不意味着您可以简单地使用他们的任何 API,我确保为其他可能发现它有用的人"修复"(取消注释(我发布的代码。

最新更新