Facebook logowanie(Devise + OmniAuth vs Authlogic + AuthlogicConnect)

Zastanawiam się, które rozwiązanie z tytułu będzie lepsze do logowania poprzez facebook.

User ma mieć możliwość “normalnego” zalogowania się oraz poprzez konto na facebook’u(klika zaloguj się poprzez facebook, zostaje przelogowany na stronę logowania na fejsie, a następnie jeśli logowanie powiodło się, zostaje przekierowany z powrotem na stronę aplikacji).

Jestem bardziej za Devise’m bo mam w nim większe doświadczenie(i IMHO rozwija się bardziej dynamicznie niż konkurencja oraz jest łatwiejszy do ogarnięcia) niż w Authlogic, ale logowanie, rejestracja są już napisane i działają w projekcie.
Jednakże projekt ma byc przez dłuższy czas wspierany i mogą wyniknąć kwiatki podczas aktualizacji gemów.
Praktycznie mówiąc dziś wyniknął dość śmieszny błąd podczas odpalenia

bundle install

Wywala bład(na jakiejkolwiek stronie aplikacji!):

 "uninitialized constant AuthlogicConnect"

a gemy jak popatrzałem praktycznie nie zostały zaaktualizowane(jak była wersja Authlogic 2.1.3, tak nadal jest po bundlerze).

Następna sprawa to jak ma wyglądać sytuacja z użytkownikiem, który nie ma konta w serwisie i loguje się poprzez facebook.
Po pomyślnym zalogowaniu poprzez fejsa user ma mieć utworzone konto w serwisie. Jednak gdyby mu się zachciało “normalnego” logowania musiałby skorzystać z opcji przypominania hasła ALBO losowe hasło powinno być generowane i wysyłane na maila po utworzeniu użytkownika(druga opcja wydaje mi się fajniejsza).
Jednak obecnie w kombo: Authlogic + AuthlogicConnect występuje dziwna sytuacja. Mianowicie gdy user utworzy konto poprzez fejsa, oraz następnie zachcę mu się zalogować “normalnie”, to zostaje przyblokowane logowanie przez fejsa.

Podsumowując.

  1. Jaka kombinacja lepsza: Devise + OmniAuth czy Authlogic + AuthlogicConnect.
  2. Czy często są takie problemy z zależnościami odnośnie gemów oraz errorami po update’cie przez bundler’a?
  3. Czy da się jakoś lepiej rozegrać tworzenie konta poprzez logowanie “fejsowe” niż moja chora wizja?

Z góry dziękuje za odpowiedź.

Pozdrawiam.

Znalezione zostało rozwiązanie na drugie pytanie. Był problem z bundlerem(zakomentowana linijka w configu).

Czekam na jakieś rady odnośnie 1 i 2 pytania. :wink:

Devise + OmniAuth wydaje mi się stabilnym rozwiązaniem.

Ryan Bates fajnie to pokazał w swoich railscastach. Możesz zerknąć także tu: http://blog.eax.pl/2011/02/facebook-integration-in-rails-3-using.html

W mojej aplikacji, jeśli użytkownikowi się odwidzi logowanie przez facebooka to może sobie “odzyskać” hasło - zerknij na www.timebacus.com -> zakładka My Account -> user może też odzyskać hasło będąc zalogowanym.

Uważaj na Twittera - nie wysyłą adresu email użytkownika w odpowiedzi od jakiegoś czasu i przy rejestracji trzeba usera poprosić o email.

Na pytanie “Devise czy Authlogic” właściwie sam sobie odpowiedziałeś.

Co do 3) – nie pisałem nigdy takich rzeczy, ale serwisy z których korzystam i do których loguję się zewnętrznymi kontami (google/fb) w ogóle nie wspominają mi o czymś takim jak hasło :wink:

A jest możliwość logowania “normalnego” i poprzez facebook na kombinacji - Devise + OmniAuth? Czy to w jakiś sposób koliduje ?

było to na jakimś railscast’cie o ile się nie myle

Nie koliduje, musisz tylko dla niektórych użytkowników zapisać hasło, a dla innych facebook uid

Przydatna odpowiedź na problem który u mnie wystąpił:

Zrobiłem kombo Devise + OmniAuth na podstawie railscastów Ryan’a.

Generalnie logowanie “obustronne”(możliwość logowania “normalnie” jak i poprzez facebook) działa tylko wtedy, gdy konto stworzone zostało poprzez facebook, a następnie skorzystano z opcji przypominania hasła.

Jeśli user stworzył konto normalnie, a następnie miałby zachciankę logowania się poprzez facebook, to nie działa(nie tworzy rekordu w authentications, zatrzymuje się na formularzu /users/sign_up i nie przechodzi dalej).

Miał ktoś podobny problem?

Ten tutorial rozwiązuje powyższy problem:

Możliwe jest zarówno utworzenie konta przez facebook’a i następnie “normalne” logowanie.
Normalne logowanie i logowanie przez facebook’a też działa.

Devise rocks! :smiley: