ruby-on-rails - google vision API HTTP Forbidden 错误的原因?红宝石(导轨)
问题描述
我一直在尝试让 google vision 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(在我的情况下是视觉),我无法通过谷歌云控制面板上的 ui 找到此页面,只能通过链接。即使 API 密钥是活动的并且不受计费设置的限制,它也不会在不激活特定 API 的情况下运行。因为我已经注释掉了响应代码/正文,所以我只获得了我的 API 调用的状态代码并且没有看到响应的其余部分,从而阻止了我找到正确的激活链接。
这对我来说是一个巨大的判断失误,希望这将有助于遇到类似问题或希望将谷歌视觉 API 集成到 rails 应用程序并偶然发现这个线程的任何人,上面显示的代码工作得很好,是与客户端库相比,使用 API 的方法要简单得多,只需确保启用了要使用的特定 API。仅仅因为 API 密钥不受限制并不意味着您可以简单地使用他们的任何 API,我确保为其他可能觉得有用的人“修复”(取消注释)我发布的代码。
推荐阅读
- analysis - |Θ(f(n)) - O(f(n))| 混乱
- python - Python 不允许将函数作为异常引发,但 PyLint 仍然对其进行检查
- python - 按不是索引变量的列求和(Python)
- python - How do I calculate number of words and number of unique words contained within a list of a column across all rows of my dataframe?
- python - 无法使用python中的函数增加变量的值
- sql - 获取上个月的价值
- angular - 在firebase云函数中部署nestjs
- c++ - 函数调用未被识别
- javascript - 使用 ejs 模板获取通过输入发布到同一页面的值
- sql - SQL IF 语句转换为文本