有人可以帮我翻译一些PHP代码到rails吗?

时间:2011-01-15 19:25:07

标签: php ruby-on-rails ruby api ruby-on-rails-3

我正在尝试使用朋友网站的api制作应用。事情是,这是非常新的,没有多少人知道它。并且只有用PHP编写的示例.. 这是我第一次使用某种api,所以不知道从哪里开始。所有我需要知道的是基础,然后我很可能自己得到它..

require __DIR__ . '/config.php';
require realpath(__DIR__ . '/../src/') . '/dailybooth.php';

$dailybooth = new DailyBooth(array(
'client_id' => DAILYBOOTH_CLIENT_ID,
'client_secret' => DAILYBOOTH_CLIENT_SECRET,
'redirect_uri' => DAILYBOOTH_REDIRECT_URI,
));

$dailybooth->authorize();

我知道文件的要求是什么,我只需要知道我将如何在rails中做到这一点。 (授权应用程序)

3 个答案:

答案 0 :(得分:4)



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

#this is by no means complete. it is just a starting place
class DailyBooth

  include HTTParty

  API_ROOT = 'https://api.dailybooth.com/v1'

  AUTH_ROOT = 'https://dailybooth.com/oauth'

  def initialize(options)
    @oauth_token = options.fetch('oauth_token', nil)
    @client_id = options.fetch('client_id', nil)
    @client_secret = options.fetch('client_secret', nil)
    @redirect_uri = options.fetch('redirect_uri', nil)
  end

  def authorize_url
    AUTH_ROOT + "/authorize?" + {"client_id" => @client_id, "redirect_uri" => @redirect_uri }.to_params
  end

  def oauth_token(code)

    response = token({
            'grant_type' => 'authorization_code',
            'code' => code,
            'client_id' => @client_id,
      'client_secret' => @client_secret,
      'redirect_uri' => @redirect_uri
    })

    @oauth_token = response.fetch('oauth_token', nil)    
  end


  def token(params)
    self.class.post(AUTH_ROOT + '/token', {:body => params});
  end

  def get(uri, query = {})
    self.class.get(API_ROOT + uri, {:query => {:oauth_token => @oauth_token}.merge(query) })
  end

  def post(uri, params = {})
    self.class.post(API_ROOT + uri, {:body => {:oauth_token => @oauth_token}.merge(params) });
  end

end


dailybooth = DailyBooth.new({
  'client_id' => '',
  'client_secret' => '',
  'redirect_uri' => '',
  #'oauth_token' => '' 
});

#first redirect the user to the authorize_url
redirect_to dailybooth.authorize_url

#on user return grab the code from the query string
dailybooth.oauth_token(params[:code])

#make request to the api
pp dailybooth.get('/users.json')

答案 1 :(得分:2)

您是否在询问如何连接Ruby / Rails中的DailyBooth API?它只是一个REST API,所以你可以将你的工作基于Dropbox,Tumblr,Flickraw或Twilio gem这样的东西,但是考虑到你在问题中解释的内容,它会高于你现在所知的。

不幸的是,DailyBooth似乎没有完成他们的文档,并且我找不到可用的Ruby SDK或gem。

答案 2 :(得分:0)

使用HTTParty创建API客户端非常简单。请参阅源代码中的examples目录。唯一的另一件是OAuth。 Twitter gem使用HTTParty和OAuth,所以至少你有一个例子。