Мое приложение архивировано следующим образом: у меня есть веб-сервис (работает на GAE, не очень соответствующий этому вопросу), а данные, которые эта служба содержит, доступны через веб-сайт и через мобильные и настольные приложения.
В настоящее время пользователь аутентифицируется на веб-сайте через Google ClientLogin, и приложения аутентифицируются/получаются с помощью встроенного поставщика услуг GAE. (OAuth используется здесь в основном для аутентификации, мое приложение фактически не использует внешние данные через OAuth, кроме уникального идентификатора пользователя и адреса электронной почты.)
То, что я хотел бы сделать, - это расширить количество сервисов, которые пользователи могут использовать для входа. Из-за усложняющего фактора приложений кажется, что мне нужен OAuth. Но я не могу правильно концептуализировать, как этот поток должен идти.
Давайте рассмотрим Facebook в качестве примера. Когда мобильное приложение проходит через поток oauth Facebook и получает токен доступа, этого недостаточно - потому что его служба, а не приложение, на самом деле должна разговаривать с facebook для получения контактной информации и уникального идентификатора пользователя. Это заставляет меня думать, что процесс OAuth должен происходить в контексте моего сервиса, а не в мобильном приложении. Затем мое обслуживание становится потребителем, а Facebook - провидером oauth, и служба держится за токен доступа oauth, это происходит, когда пользователь устанавливает свою учетную запись в первый раз.
Если это правильный подход, где это означает, что проверка подлинности для приложений? Что происходит, когда пользователь уже имеет учетную запись и устанавливает новый экземпляр мобильного приложения? Я предполагаю, что вы также проходите процесс oauth, сопоставляя учетные данные с данными, уже сохраненными моей службой, а затем выдаете мой собственный токен доступа в приложение из службы, чтобы разрешить этот экземпляр приложения. Это кажется запутанным и хакерским.
Я уверен, что я не могу быть единственным человеком, который фактически "заимствует" систему учетных записей третьей стороны для мобильного приложения с бэкэнд, но я действительно не понимаю, какой правильный способ сделать это.
Что я не вижу и/или не понимаю концептуально неправильно?