PhoneGap и OAuth2 - PullRequest
       1

PhoneGap и OAuth2

7 голосов
/ 20 марта 2012

Я разрабатываю приложение PhoneGap и требую, чтобы мои пользователи выполнили вход через Google с помощью OAuth2.Возможно ли это напрямую через JavaScript?У меня почти нет опыта работы с JavaScript (и jQuery).

Какие есть варианты?Я подумал о громоздкой альтернативе, которая включает в себя отправку имени пользователя / пароля в приложение, которое я разместил на сервере, который затем позаботится о входе в систему. Затем приложение PhoneGap должно будет спросить сервер, прошла ли аутентификация успешно.Однако я надеялся, что будет более простой способ.

Как лучше всего войти через Google в приложении PhoneGap?

Ответы [ 2 ]

8 голосов
/ 20 мая 2012

Мне удалось заставить его работать! Я публикую свои мысли здесь, потому что мне было трудно найти ответ после нескольких часов поиска в Интернете.

Важными шагами являются:

  • Убедитесь, что ChildBrowser работает правильно
  • Настройка функции, которая будет прослушивать изменения страницы window.plugins.childBrowser.onLocationChange = function(fooUrl) { console.log(fooUrl); }
  • Создайте URL со строкой запроса, как описано в этого руководства
  • Укажите ChildBrowser на URL
  • Когда пользователь войдет в систему, вы сможете извлечь токен сеанса из fooUrl

Если вы все еще не знаете, как это сделать, взгляните на это приложение для Android . (Существует много кода, и это может показаться подавляющим, поэтому я предлагаю использовать это только в качестве крайней меры)

4 голосов
/ 29 августа 2012

Google не разрешит вам выполнять прямую аутентификацию, напрямую обрабатывая учетные данные пользователя. Вместо этого Google хочет, чтобы вы выполнили протокол аутентификации, обычно OAuth 2.0. Другие популярные протоколы аутентификации, о которых вы можете услышать, - это OpenID 1.0, 2.0, OpenID Connect, SAML 2.0, ID-FF и т. Д. Эти протоколы перенаправят пользователя к провайдеру идентификации (в данном случае Google) и отправят вас обратно с утверждение , которое вы можете использовать для доверия пользователю. С такими API, как Google, вы бы использовали функцию авторизации OAuth, которая предоставляет вам токен, который вы можете использовать со всеми API Google после аутентификации.

С PhoneGap и мобильными приложениями все немного отличается от обычной настройки OAuth.

В вашем случае браузер находится в контролируемой среде вашего приложения, и вы можете

  • выберите, чтобы перенаправить пользователя на конечную точку авторизации Google с помощью основного вида,
  • выберите, чтобы открыть ChildBrowser с конечной точкой авторизации Google, чтобы не потерять состояние в вашем приложении.
  • чтобы как-то открыть Safari или другой браузер с конечной точкой авторизации и зарегистрировать пользовательский обработчик схемы, чтобы перенаправить пользователя обратно в ваше приложение после аутентификации.

Эти примеры смутно упоминаются в спецификациях OAuth 2.0, но нет никакой помощи в том, что является лучшим или оптимальным в конкретном случае использования. Часто лучший из возможных вариантов не идеален (с точки зрения пользователя).

Недавно я написал учебник о том, как заставить это работать с Phonegap и ChildBrowser для iOS.

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