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.

Author: rnaud, 2011-01-26

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ę:)

 36
Author: rnaud,
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