Как авторизовать мобильные приложения с помощью третьей стороны, но подключайтесь к моему сервису, а не к третьей стороне

Мое приложение спроектировано следующим образом: у меня есть веб-сервис (работающий на GAE, не очень соответствующий этому вопросу), и данные, которые содержит этот сервис, доступны через веб-сайт, а также через мобильные и настольные приложения.

В настоящее время пользователь проходит проверку подлинности на веб-сайте через Google ClientLogin, а приложения проходят проверку подлинности / авторизацию через встроенного поставщика GAE oauth. (OAuth используется здесь в основном для аутентификации, мое приложение фактически не использует никаких внешних данных через OAuth, кроме уникального идентификатора пользователя и адреса электронной почты.)

То, что я хотел бы сделать, это расширить количество услуг, которые пользователи могут использовать для входа в систему. Из-за усложняющего фактора приложений, кажется, мне нужен OAuth. Но я не могу правильно понять, как должен идти этот поток.

Давайте возьмем Facebook в качестве примера. Когда мобильное приложение проходит через поток oauth Facebook и получает токен доступа, этого недостаточно, потому что это моя служба, а не приложение, которое на самом деле должно общаться с Facebook, чтобы получить контактную информацию и уникальный идентификатор пользователя. Это заставляет меня думать, что процесс OAuth должен происходить в контексте моей службы, а не мобильного приложения. Мой сервис становится потребителем, а Facebook - провайдером oauth, и сервис удерживает маркер доступа oauth, это происходит, когда пользователь впервые настраивает свою учетную запись.

Если это правильный подход, где же оставить аутентификацию для приложений? Что происходит, когда пользователь уже имеет учетную запись и устанавливает свежий экземпляр мобильного приложения? Я также представляю, как проходил процесс oauth, сопоставляя учетные данные с данными, уже сохраненными моим сервисом, и затем выдавал свой собственный «токен доступа» к приложению из сервиса, чтобы авторизовать этот экземпляр приложения. Это кажется запутанным и хакерским.

Я уверен, что не могу быть единственным человеком, который фактически «заимствует» систему аккаунтов у стороннего разработчика для мобильного приложения с бэкэндом, но я действительно не понимаю, каков правильный способ сделать это.

Что я не вижу и / или не понимаю концептуально?

Ответы на вопрос(1)

Ваш ответ на вопрос