Ответ 1
Хорошо, поэтому я отвечаю на свой вопрос.
Если вы используете Facebook SDK, SSO работает неплохо на устройстве, НО, токен, который вы получаете, не совпадает с тот, который вы получите в своем приложении 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
Если у кого-то есть лучшее решение, я был бы рад услышать это:)