Devise Omniauth i aplikacja na Iphone/Android
Skonfigurowałem user auth dla mojej aplikacji rails z Devise i Omniauth. Teraz zastanawiam się, gdzie powinienem zacząć używać tego samego auth dla aplikacji na Androida i iPhone, którą chcę utworzyć.
Czy powinienem używać mobilnej wersji mojego/auth / facebook czy powinienem wysłać prośbę bezpośrednio z aplikacji ?
To dość ogólne pytanie, ale nie znalazłem gdzie szukać.
EDIT: właśnie dodałem Token Auth do aplikacji, aby używać z RESTful api, brakuje mi tylko Omniauth / Facebook-token part.
1 answers
W porządku, więc odpowiadam na własne pytanie.
Jeśli używasz Facebook SDK, SSO działa całkiem dobrze na urządzeniu, ale token, który otrzymujesz, nie jest taki sam, jak ten, który otrzymasz w aplikacji Rails. Najwyraźniej Facebook tworzy różne tokeny w zależności od wsparcia.
Więc to, co zrobiłem, to: Kiedy otrzymam token na urządzeniu z Androidem, wysyłam go do mojej aplikacji rails przez adres url:
http://myapp/check_mobile_login?token=FB_MOBILE_TOKEN
Jest następnie przechwytywany przez mój kontroler aplikacji, który używa tokena z gem fb_graph do pobierania danych użytkownika. Jeśli Token jest ważny, otrzymam kilka informacji. Następnie sprawdzam w mojej bazie danych, a jeśli znajdę ten sam UID, to mój użytkownik zostanie uwierzytelniony i odeślę mu z powrotem Authentificable_token z Devise.
I Kod projektu:
def check_mobile_login
token = params[:token]
user = FbGraph::User.me(token)
user = user.fetch
logged = User.find_by_uid(user.identifier)
respond_to do |format|
format.html # index.html.erb
format.json { render :json => logged.authentication_token }
end
end
Jeśli ktoś ma lepsze rozwiązanie, to chętnie to usłyszę:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-01 15:08:24