2012-03-01 115 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的請求。