我很高兴看到谷歌代码: google-api-ruby-client 项目,因为对我而言,Ruby人员可以使用 Google API 来修饰代码 - 第
目前虽然我很难过,因为唯一的例子是使用Buzz,但是从我的实验中,谷歌翻译(v2)api的行为必须与 {{3}中的Buzz完全不同}}
我对'资源管理器'演示示例很感兴趣 - 但就我所见,它并不是一个探险家。它所做的只是调用一个Buzz服务,然后在它已经知道的关于Buzz服务的事情上发表意见。对我来说,探险家应该让你“发现”所提供的服务和方法/功能,而必然已经知道它们。
我很想听到Ruby命令行和桌面应用程序使用此功能: google-api-ruby-client 用于服务 其他 而不是Buzz特别是翻译api(我现在 对使用翻译服务的现有Ruby宝石感兴趣)。
谢谢...... 将
答案 0 :(得分:9)
调用translate API的代码如下所示:
require 'google/api_client'
client = Google::APIClient.new(:key => YOUR_DEVELOPER_KEY)
translate = client.discovered_api('translate', 'v2')
result = client.execute(
:api_method => translate.translations.list,
:parameters => {
'format' => 'text',
'source' => 'en',
'target' => 'es',
'q' => 'The quick brown fox jumped over the lazy dog.'
}
)
答案 1 :(得分:3)
我发布了auth问题和解决方法(使用api密钥)的完整代码和详细信息 the code abode - google-api-client for ruby
安装宝石后,获取Google API密钥,并设置自定义搜索帐户(其首选项扩展到所有网页)....我可以使用以下内容在irb中搜索谷歌搜索结果(复制粘贴到irb,然后在完成后检查响应):
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
require 'google/api_client'
client = Google::APIClient.new(:key => 'your-api-key', :authorization => nil)
search = client.discovered_api('customsearch')
response = client.execute(
:api_method => search.cse.list,
:parameters => {
'q' => 'the hoff',
'key' => 'your-api-key',
'cx' => 'your-custom-search-id'
}
)
这是为了让服务器访问google api并绕过所有oauth的东西。最重要的是在构建客户端时的授权参数....这确保了在调用时使用api密钥,而不是oauth。没有它,您每次都会获得401 Unauthorized响应状态。
答案 2 :(得分:2)
我最近在一个 Rails 5 项目中解决了这个问题,这是我如何让它工作的。我知道这是使用更新的 Google Gem - 但希望人们会找到这个更新的答案并发现它有用。
首先,您需要在 Google 控制台中启用翻译 API - 我还创建了一个服务帐户 here。我在这里通过向导获得了我的 json 凭据文件(见下文)。
首先:
/Gemfile
gem 'google-cloud-translate'
我将 ENV 设置添加到初始化文件中。我还添加了一个项目字符串......花了我一段时间才弄清楚。确保将第二行的 'google-project-name' 设置为您的 google 控制台项目名称!
/config/initializers/my_project_name_init.rb
ENV['GOOGLE_APPLICATION_CREDENTIALS'] = Rails.root.to_s + '/cert/my_project-translation-credentials.json'
GOOGLE_TRANSLATE_PROJECT_STRING = "projects/google-project-name/locations/us-central1"
之后就很简单了。我在模型中添加了一个简单的方法:
require "google/cloud/translate"
client = Google::Cloud::Translate.new
response = client.translate_text(["Let's go surfing"], 'fr', GOOGLE_TRANSLATE_PROJECT_STRING)
translation = response.translations&.first&.translated_text
我知道这是一个初级的答案 - 但我希望这可以为某人节省很多时间。我花了很长时间才弄到这个,谷歌的文档已经过时,冗余而且很糟糕......
答案 3 :(得分:0)
感谢Bob,我向前迈了一步。
我现在发现.CRT证书文件有问题。我有一个CA-bundle,来自cURL网站(http://curl.haxx.se/ca)上提供的CA-bundle生成器。
另请阅读: How to Cure NetHhttps Risky Default HTTPS Behavior
我认为下一个问题需要是为OpenSSL找到捆绑包。
瓦特
答案 4 :(得分:0)
嗨(全部)感兴趣的人,
更多进步。我为bug report添加Google-API-Ruby-client部分问题。简短版本是Translate(至少)Google-API-Ruby-client在SSL :: VERIFY_PEER下失败,并且在使用SSL :: VERIFY_NONE时成功。
在坚果壳中,需要修复一个问题,需要两个增强功能。
答案 5 :(得分:0)
我有一个解决方案(http://jjinux.blogspot.com/2012/02/ruby-working-around-ssl-errors-on-os-x.html)猴子补丁Net :: HTTP#use_ssl =为了使用操作系统的根证书。