Выполнение авторизованных (через facebook) REST-запросов на мой сервер node.js в приложении PhoneGap - PullRequest
5 голосов
/ 08 октября 2011

Поскольку в этом выпуске рассказывается о трех технологиях, я хотел бы быстро представить каждую из них:

  • node.js: javascript на стороне сервера (рассмотрим мой веб-сервер)
  • PhoneGap: фреймворк, позволяющий писать приложения для Android на HTML / Javascript / CSS.
  • Аутентификация на Facebook: использование everyauth , чтобы позволить моим пользователям войти в систему с учетной записью Facebook

Цель : мне нужно, чтобы приложение PhoneGap связывалось с моим сервером по протоколу REST.Многие из этих запросов могут быть сделаны только тогда, когда пользователь вошел на мой сервер, используя свою учетную запись Facebook.Таким образом, пользователю необходимо войти в систему, а затем перейти в состояние входа в систему приложения PhoneGap.

Проблема : Когда я настраиваю Everyauth для Facebook, я в основном имею URL-адрес, например домен.com / auth / facebook, который будет перенаправлять на логин Facebook "всплывающее окно".Когда пользователь примет логин, сервер узнает, и пока все хорошо.Проблема в том, что

  1. пользователь теперь должен быть перенаправлен на какой-то внешний URL, а ему просто нужно вернуться в приложение PhoneGap (в состоянии входа в систему)
  2. Приложение PhoneGap не получает токен аутентификации, а также, была ли аутентификация успешной или нет, потому что процесс входа выполняется во внешнем URL-адресе domain.com/auth/facebook, в то время как HTML-код приложения PhoneGap сохраняется и запускается с самого телефона

Причина проблемы : причина, по которой эта проблема возникает, а не для обычного веб-приложения, заключается в том, что HTML-файлы приложения PhoneGap сохраняются и запускаются с самого телефона во время аутентификациипроходит через domain.com/auth/facebook, который считается другим доменом.

Предлагаемый подход # 1 : пользователь PhoneGap рекомендовал мне использовать эту Android-Плагин Facebook для PhoneGap .Проблема здесь в том, что сервер не действует как посредник аутентификации.Таким образом, пользователь должен будет информировать сервер о своем токене аутентификации вместо обычного подхода, при котором сервер информирует пользователя об успешной процедуре аутентификации и соответствующих токенах.Это похоже на серьезную уязвимость.

Как мне решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 08 октября 2011

С помощью плагина ChildBrowser приложение PhoneGap может отслеживать изменения местоположения с сайта аутентификации.

Мы использовали этот подход для интеграции приложения PhoneGap с узлом .js openid модуль

2 голосов
/ 08 октября 2011

Я реализовал одно решение для Twitter, используя jsOauth и ChildBrowser (tut./src здесь ) для приложения PhoneGap / Android. Я знаю, что это не включает в себя пользовательскую регистрацию на сервере nodejs; он разрешает доступ только к Twitter REST. AFAIK, это единственный способ сделать это в настоящее время, то есть, чтобы дочерний браузер проверял каждое новое местоположение, чтобы увидеть, является ли это URL-адрес возврата вашего приложения, затем вмешался (закрыть окно браузера) и зашел в ваше собственное приложение.

С библиотекой jsOauth ключ / секретный ключ аутентификации сохраняется для вас и отправляется при каждом запросе.

Re: безопасность - здесь нет опыта, но обсуждения показывают, что данные такого рода на личном телефоне не более подвержены риску, чем все остальное на телефоне.

Tut. используя плагин PhoneGap / Android Facebook в следующем списке. Спасибо за ссылку на Everyauth!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...