OAuth в Rails - Google, Twitter, Facebook, подключиться для входа в систему, например, как stackoverflow - PullRequest
5 голосов
/ 02 апреля 2010

В Rails есть плагин rest autho, который работает хорошо, но есть решение для включения твиттера, фейсбука, гугла, Yahoo и т. Д ...

Похоже, у каждого есть свой плагин и требования, и смешивание их будет беспорядком.

Это для входа в систему пользователей, например, как Stackoverflow делает вещи не для того, чтобы использовать надежные функции API.

Что я хочу сделать, это сделать то, что stackoverflow сделал для входа в систему, но в rails.

Ответы [ 5 ]

6 голосов
/ 03 января 2011

Я бы определенно проголосовал за OmniAuth:

https://github.com/intridea/omniauth

Вот несколько ресурсов для начала работы:

http://blog.railsrumble.com/blog/2010/10/08/intridea-omniauth

http://railscasts.com/episodes/235-omniauth-part-1

http://railscasts.com/episodes/236-omniauth-part-2

3 голосов
/ 02 апреля 2010

Нетрудно написать собственный код контроллера для подключения к каждой из этих служб и перенаправления. Например, для аутентификации в твиттере с использованием oauth требуется два действия и всего около 20 строк кода.

Храните код для каждой службы отдельно в своем контроллере.

def twitter_oauth
  o = Twitter::OAuth.new(your_twitter_consumer_token, your_twitter_consumer_secret, :authorize_path => '/oauth/authenticate', :sign_in => true)
  o.set_callback_url(twitter_cb_url)
  session[:twitter_oauth_request_token] = o.request_token.token
  session[:twitter_oauth_request_secret] = o.request_token.secret
  redirect_to o.request_token.authorize_url
end

def twitter_oauth_cb
  o = Twitter::OAuth.new(your_twitter_consumer_token, your_twitter_consumer_secret, :authorize_path => '/oauth/authenticate', :sign_in => true)
  if params[:denied]
    redirect_to root_url
  elsif params[:oauth_verifier]
    o.authorize_from_request(session[:twitter_oauth_request_token], 
                             session[:twitter_oauth_request_secret],
                             params[:oauth_verifier])
    # look up this user in the db by o.access_token.token 
    # is the user not found? create them, save their token
    # log them in - UserSession.create(user, true)
    redirect_to root_url
  end
end
1 голос
/ 22 мая 2010

Я реализовал это с помощью authlogic, используя тот же плагин JQuery OpenID Selector, который использует StackOverflow. Работает с Google, Yahoo, Facebook и т. Д. Я использую его около 3 месяцев, и он работает довольно хорошо. Еще несколько изломов для тренировки, он также поддерживает автоматическую регистрацию.

Я бы хотел добавить твиттер в будущие версии и надеюсь, что другие помогут добавить некоторые функции / исправления ошибок. ;-) Проверьте это.

В действии:

http://big -glow-mama.heroku.com /

Код:

http://github.com/holden/authlogic_openid_selector_example

0 голосов
/ 03 мая 2014

Если вы хотите более полнофункциональное решение и хотите реализовать традиционный метод регистрации, вы можете использовать devise gem, который уже поддерживает omniauth .

Вы можете следовать следующему руководству на Railscast

http://railscasts.com/episodes/235-devise-and-omniauth-revised

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 02 апреля 2010

Если у вас есть бюджет, вы можете проверить RPX: https://rpxnow.com/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...