2012-03-01 42 views
0

我一直在尝试构建一个使用Reddit的API的小机器人。我可以分解并阅读所有我没有问题收到的信息,但我还没有能够发送任何东西。使用JSON登录到Reddit API

我想要做的是: 发送准备JSON字符串http://www.reddit.com/api/login并得到某种回应的,如果我是成功还是失败。

如果您需要了解reddit的的API的更多信息:https://github.com/reddit/reddit/wiki/API

这是我到目前为止有:

require 'rubygems' 
require 'httparty' 
require 'json' 
require 'pp' 

class Login 
    include HTTParty 
    base_uri 'reddit.com/' 
    default_params :output => 'json' 
    format :json 
    def post(message) 
    options = {:body => JSON.generate(message)} 
    self.class.post('api/login', options) 
    end 
end 

login = Login.new() 
pp login.post({'username' => 'USERNAME', 'passwd' => 'PW'}) 

此代码给我下面的错误:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1060:in `request': undefined method `closed?' for nil:NilClass (NoMethodError) 

尽管一段非常类似的代码会发布到Twitter。另外,我不确定我的代码是否真的从网站获得某种回应。

对我而言,如果我使用HTTParty或不使用,所以如果你知道更好的方法做到这一点,请随时分享!

在此先感谢!

回答

2

你可以把它改写这样

class Login 
    include HTTParty 
    base_uri 'http://www.reddit.com' 

    def post(username, password) 
    options = {:body => {:user => username, :passwd => password, :api_type => 'json'}} 
    self.class.post("/api/login/#{username}", options) 
    end 
end 

Login.new.post('user', 'pass') 

只要记住,API网址登录必须是:http://www.reddit.com/api/login/USERNAME(以www),你应该通过api_type PARAM的请求。