Rails 3 аутентификация с использованием OpenID, Twitter или Facebook - PullRequest
23 голосов
/ 26 апреля 2010

Можете ли вы предложить какой-нибудь рабочий пример этого? Я попробовал Authlogic и Devise безуспешно.

Ответы [ 6 ]

16 голосов
/ 16 августа 2010

ОБНОВЛЕНИЕ - июнь 2011 - Я недавно использовал omniauth gem , и я думаю, что это лучшее решение, чем использование драгоценных камней, предложенных в этом ответе. Он хорошо работает с Devise и даст вам все необходимое в одном драгоценном камне. Я создал движок, который объединяет Devise и Omniauth и добавляет контроллер для обработки обратных вызовов. У меня довольно много изменений, запланированных для гема, и сейчас я не считаю его стабильным плагином, но вы можете повторно использовать часть кода в геме: https://github.com/charlotte-ruby/devise_omniauth_engine/blob/master/app/controllers/users/omniauth_callbacks_controller.rb


Недавно я работал над Rails 3 (с некоторыми проблемами при использовании OpenID). У меня нет полного рабочего примера, который вы можете посмотреть на github, но вот что я использую ... у каждого из которых есть примеры в файлах readme.

Facebook - fbgraph . В отличие от Facebooker, он использует самый последний API Facebook. И источник очень легко понять, если вы хотите взглянуть на внутреннюю работу. Посмотрите на пример аутентификации в файле readme. Смертельно просто.

Twitter - twitter_oauth Опять же, посмотрите пример аутентификации readme. Это было довольно легко настроить тоже.

OpenID - rails / open_id_authentication использует гем ruby-openid, но сам репозиторий не является гемом, поэтому вам придется добавить код в свое приложение или вставить в свой каталог плагинов. Посмотрите на их пример в файле readme, а также внимательно изучите источник, чтобы понять, что происходит (всего 130 строк кода). Я немного изменил его, чтобы он работал с моим подключаемым модулем аутентификации, но я столкнулся с некоторыми проблемами, заставив его работать одновременно с простой регистрацией и обменом атрибутами ... но вы могли бы заставить его работать из коробки, если пример rdoc подходит для вашего приложения.

Дайте мне знать, если у вас есть какие-то конкретные вопросы по этим вопросам. Я столкнулся с несколькими проблемами, которые мне удалось решить со всеми 3, когда я настраивал это.

4 голосов
/ 20 августа 2010

Я потратил около недели, пытаясь (безуспешно) заставить работать open_id_authentication. Я пытался использовать Authlogic и все связанные гемы и плагины. Я не мог заставить вещи работать так, как я хотел. (Аутентификация будет работать только с включенным маршрутом: action (/: id), но когда он был включен, мои другие контроллеры не будут работать, потому что что-то в плагине очищает хэш параметров - очень расстраивает).

Однако, наконец, я смог заставить OpenID работать, используя Devise (http://github.com/plataformatec/devise) и devise_openid_authenticatable (http://github.com/nbudin/devise_openid_authenticatable).). Я смог следить за readme на обеих страницах, чтобы все работало точно так же, как я хотел. Простой. Прямой. И совместимый с Rails 3.0.

2 голосов
/ 13 августа 2010

Devise построен на Warden, который является правильным термином Google. Ищите «warden openid», «warden oauth» (твиттер) и http://github.com/britt/facebook-warden-strategy для facebook

1 голос
/ 24 января 2011

Если вы собираетесь использовать Facebooker 2, вам придется обновить фреймворк Rails до 3.0. Ayeah Games только что прошла процесс для игры FanSwarm (на Facebook). Это непростая задача, но пост в блоге может дать вам некоторое представление.

http://www.ayeahgames.com/blog/bid/55099/The-Horror-Upgrading-to-Rails-3

0 голосов
/ 17 декабря 2010

Я нашел самый простой способ сделать это - использовать RPX NOW service.

Вы можете найти полный рабочий пример использования его с Rails3 и гемом RPX NOW на github .

0 голосов
/ 16 августа 2010

AuthLogic имеет расширение OpenID.

Также это может помочь: http://www.michaelhamrah.com/blog/2009/05/authlogic-and-openid-on-rails/

...