Поскольку в этом выпуске рассказывается о трех технологиях, я хотел бы быстро представить каждую из них:
- node.js: javascript на стороне сервера (рассмотрим мой веб-сервер)
- PhoneGap: фреймворк, позволяющий писать приложения для Android на HTML / Javascript / CSS.
- Аутентификация на Facebook: использование everyauth , чтобы позволить моим пользователям войти в систему с учетной записью Facebook
Цель : мне нужно, чтобы приложение PhoneGap связывалось с моим сервером по протоколу REST.Многие из этих запросов могут быть сделаны только тогда, когда пользователь вошел на мой сервер, используя свою учетную запись Facebook.Таким образом, пользователю необходимо войти в систему, а затем перейти в состояние входа в систему приложения PhoneGap.
Проблема : Когда я настраиваю Everyauth для Facebook, я в основном имею URL-адрес, например домен.com / auth / facebook, который будет перенаправлять на логин Facebook "всплывающее окно".Когда пользователь примет логин, сервер узнает, и пока все хорошо.Проблема в том, что
- пользователь теперь должен быть перенаправлен на какой-то внешний URL, а ему просто нужно вернуться в приложение PhoneGap (в состоянии входа в систему)
- Приложение PhoneGap не получает токен аутентификации, а также, была ли аутентификация успешной или нет, потому что процесс входа выполняется во внешнем URL-адресе domain.com/auth/facebook, в то время как HTML-код приложения PhoneGap сохраняется и запускается с самого телефона
Причина проблемы : причина, по которой эта проблема возникает, а не для обычного веб-приложения, заключается в том, что HTML-файлы приложения PhoneGap сохраняются и запускаются с самого телефона во время аутентификациипроходит через domain.com/auth/facebook, который считается другим доменом.
Предлагаемый подход # 1 : пользователь PhoneGap рекомендовал мне использовать эту Android-Плагин Facebook для PhoneGap .Проблема здесь в том, что сервер не действует как посредник аутентификации.Таким образом, пользователь должен будет информировать сервер о своем токене аутентификации вместо обычного подхода, при котором сервер информирует пользователя об успешной процедуре аутентификации и соответствующих токенах.Это похоже на серьезную уязвимость.
Как мне решить эту проблему?