使用 JSON 到 Reddit API 登录
-
14-11-2019 - |
题
我一直在尝试构建一个使用 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 并不重要,所以如果您知道更好的方法,请随时分享!
提前致谢!
解决方案
你可以像这样重写它
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 url 必须是: http://www.reddit.com/api/login/USERNAME
(带有 www),你应该通过 api_type
请求中的参数。
不隶属于 StackOverflow