从ruby中的api授权和获取数据

时间:2014-03-06 11:59:14

标签: ruby authentication

我试图点击API来获取值,但是api提示我进行身份验证,我应该提供用户名和密码。 我尝试使用其他API,我能够获取数据。想知道如何进行此身份验证。我对Ruby很陌生,这就是我的工作方式:

require 'open-uri'
require 'json'

result = JSON.parse(open("http://api.geonames.org/searchJSON?q=london&maxRows=10&username=demo").read)
puts "#{result}"

1 个答案:

答案 0 :(得分:3)

我不熟悉这项服务,但很可能你可以试试Basic Authentication

result = JSON.parse(open("http://username:password@api.geonames.org/searchJSON?q=london&maxRows=10&username=demo").read)

正如@Slicedpan建议的那样,您也可以使用open s options arguments

result = JSON.parse(open("http://api.geonames.org/searchJSON?q=london&maxRows=10&username=demo", :http_basic_authentication=>['user', 'password']).read)

如果您收到SSL错误,请查看此blog post

  

错误   ---你见过其中一条错误信息吗?

openssl::ssl::sslerror: ssl_connect returned=1 errno=0 state=sslv3 read server certificate b: certificate verify failed

could not load openssl. you must recompile ruby with openssl support or change the sources in your gemfile from 'https' to 'http'.
     

有关使用rvm使用openssl进行编译的说明,请访问:   rvm.io/packages/openssl。

     

使用RVM修复SSL证书   ---最新版本的RVM Ruby Version Manager包含一个实用程序,用于诊断和解决由过时引起的错误   证书文件。请参阅文章Installing Rails   说明和建议。 RVM网站解释了how to install RVM

     

如果您已安装RVM,请尝试以下操作:

$ rvm -v
# rvm 1.19.1 (stable)
$ rvm osx-ssl-certs status all
# Certificates for...
$ rvm osx-ssl-certs update all
# Updating certificates...