Warte uwagi: rpx_now

Zmuszenie Authlogica do współpracy z kontami Google i Facebook Connectem jednocześnie było jednym z bardziej frustrujących doświadczeń w mojej pracy z Railsami. Z pozoru wszystko wygląda pięknie – Authlogic daje się rozszerzać i istnieją moduły OpenID, Facebook Connect czy OAuth współpracujące z nim. W rzeczywistości każdy taki moduł, pisany przez kogo innego wymaga dodatkowych śmieci w modelu użytkownika i po miesiącu nikt już nie pamięta skąd w Userze te 10 dziwnych metod…

I tak przeglądając alternatywy dla Authlogica na piątym miejscu listy w Ruby-Toolboksie znalazłem wybawienie – rpx_now

Co to?

RPX to usługa, która dość powoli zdobywa popularność w Internecie. Jej podstawową rolą jest ułatwienie integracji budowanych aplikacji (stron, serwisów, ...) z kontami Facebook, Google, Twitter i innymi – kompletna lista zawiera 12 sytemów uwierzytelniania. Decydując się na RPX, po stronie developera pozostaje jedynie prosta konfiguracja usług w panelu RPX oraz wykorzystanie jednego – a nie dwunastu – API. Cała robota w obsłużeniu wszystkich 12 back-endów spada na RPX i – nie ma co ukrywać – system robi to znakomicie, zapewniając jednolity user experience dla każdego użytkownika, niezależnie od wybranej przez niego opcji.

A na dokładkę dla leniwego (jak ja) developera powstał gem rpx_now.

Jak to?

Opis całej funkcjonalności gema mieści się w krótkim README, a zapamiętać wystarczy 4 punkty:

  • załóż konto i pobierz klucz API ze strony RPX
  • uruchom migrację
  • przygotuj widok z logowaniem
  • pobierz dane użytkownika z RPX aby zalogować lub zarejestrować Usera

Migracja dodaje jedno pole identifier do modelu User. W widoku należy wstawić skrypt RPX’a z użyciem helperów RPXNow.embed_code lub RPXNow.popup_code, a w jedynej akcji kontrolera zalogować lub zarejestrować użytkownika przy użyciu danych otrzymanych z usługi.

Na koniec

RPX oferuje darmowy plan, który moim zdaniem wystarcza do większości zastosowań. Dopiero bardziej zaawansowane, społecznościowe funkcje zintegrowanych serwisów są dostępne w taryfach płatnych. Jest też haczyk – wersja bezpłatna wyświetla link “Powered by RPX” w okienku logowania. Żadne jednak z tych ograniczeń nie osłabiły mojego zapału do korzystania z RPX i gem rpx_now na pewno trafi do niejednego przyszłego railsowego projektu.