Разработайте приложение Omniauth и Iphone / Android - PullRequest
25 голосов
/ 26 января 2011

Я настроил аутентификацию пользователя для моего приложения rails с Devise и Omniauth. Теперь мне интересно, с чего бы мне начать использовать ту же аутентификацию для приложения для Android и iPhone, которую я хочу создать.

Должен ли я использовать мобильную версию моего / auth / facebook или напрямую отправить запрос из приложения?

Это довольно общий вопрос, но я не нашел на что посмотреть.

РЕДАКТИРОВАТЬ: я только что добавил Token Auth в приложение для использования с RESTful API, я просто пропускаю часть Omniauth / Facebook-токен.

1 Ответ

36 голосов
/ 01 февраля 2011

Хорошо, поэтому я отвечаю на свой вопрос.

Если вы используете Facebook SDK , единый вход работает на устройстве достаточно хорошо, НО токен, который вы получаете, не являетсятакой же, как тот, который вы получите в своем приложении Rails.Очевидно, Facebook создает разные токены в зависимости от поддержки.

Итак, что я сделал: Получив токен на устройстве Android, я отправляю его в приложение rails через URL:

http://myapp/check_mobile_login?token=FB_MOBILE_TOKEN

Это затем перехватывается моим контроллером приложений, который использует токен с гемом fb_graph для выборки пользовательских данных.Если токен действителен, я собираюсь получить некоторую информацию.Затем я проверяю свою базу данных, и, если я нахожу тот же UID, то мой пользователь проходит проверку подлинности, и я отправляю ему обратно Authentificable_token от Devise.

И черновой код:

    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

Если у кого-то есть лучшее решение, я был бы рад услышать это:)

...