导致Google视觉API HTTP禁止错误? Ruby(Rails)

时间:2019-09-13 22:45:46

标签: ruby-on-rails ruby google-cloud-platform google-vision

我一直在尝试使谷歌视觉API在我的Rails应用程序中工作,但一直得到 Net :: HTTPForbidden 响应。我不太确定是什么原因造成的,因为我似乎已正确设置了所有内容,我尝试生成新密钥,但仍然收到相同的错误,我们将不胜感激。由于明显的原因,我在本文中用“ XXXXX_MY_API_KEY_XXXXX”替换了我的API密钥,因此这不是问题,还尝试过直接粘贴图像网址来代替“ 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

1 个答案:

答案 0 :(得分:0)

好吧,所以经过数小时的讨论,我终于弄清楚了这个问题。当您首次尝试使用api时,他们将返回一个链接,您必须访问该链接才能激活特定的API(以我的情况为例),我无法通过google cloud控制面板上的ui找到此页面,只能通过链接。即使该API密钥处于活动状态且不受结算设置的限制,但如果不激活特定的API,该密钥将无法运行。因为我已经注释掉了响应代码/主体,所以我仅获得API调用的状态代码,而看不到其余的响应,从而阻止了我找到正确的激活链接。

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

相关问题