Автоматический вход в учетную запись Google в веб-просмотре Android

На прошлой неделе я завалил себя ссылками и совершил слишком много кругов, чтобы их можно было сосчитать, поэтому я решил задать вопрос здесь. У меня есть приложение для Android, которое отображает веб-просмотры, указывающие на URL-адреса, для просмотра которых пользователь должен войти в свою учетную запись Google (бэкэнд встроен в Google App Engine). Поскольку конечный пользователь, скорее всего, все равно войдет в свою учетную запись Google на своем Android, я бы хотел, чтобы процесс входа был автоматическим. В настоящее время при первом веб-просмотре пользователь открывает форму входа в Google и действительно уродливую последующую страницу с вопросом: «Хотите ли вы разрешить example.appspot.com использовать вашу учетную запись Google?»

Этот процесс ужасен для пользовательского опыта. Я видел очень мало ресурсов, посвященных автоматическому входу в систему, но я, честно говоря, потерялся в море почти того, что я хочу, но не совсем, чтобы иметь возможность определить направление, в котором я должен двигаться. .

Я прочитал Ника учебник по аутентификации приложения с помощью App Engine, но простое наличие токена не дает мне уникально назначенного идентификатора пользователя, связанного с каждой учетной записью Google на серверной части. Кроме того, предыдущий опыт научил меня тому, что сеанс веб-просмотра приложения несовместим с сеансом HTTPClient приложения. Поэтому, даже если бы я мог войти в систему с помощью метода Ника, это не помогло бы мне войти в веб-просмотры.

Затем я наткнулся на это руководство, которое на самом деле кажется многообещающим, но пока мне не удалось адаптировать его код для работы с моим собственным.

Я также нашел эту ссылку SO что предполагает, что все, что мне нужно сделать, это передать токен аутентификации (который я мог бы получить с помощью метода Ника) в каждый веб-просмотр, который я загружаю как файл cookie.

И это все. Все они довольно разные подходы, поэтому мне интересно, действительно ли какой-либо из них то, что я хочу. Или, если где-то действительно существует достаточно простой подход. Я был бы очень признателен, если бы кто-то знал прямой ответ на этот вопрос. Спасибо!


person Pete    schedule 21.12.2014    source источник
comment
Вы когда-нибудь находили решение?   -  person AlleyOOP    schedule 28.07.2016


Ответы (1)


По соображениям безопасности WebViews не имеют доступа к кешу телефона, файлам cookie хранилище и т. п., вместо этого рекомендуется использовать новые настраиваемые вкладки Chrome, которые могут автоматически регистрировать в ваших пользователях.


Относительно вопроса «Хотели бы вы разрешить example.appspot.com использовать вашу учетную запись Google?» экран; это стандартный процесс OAuth, который требует, чтобы пользователь выполнил вход и разрешил приложение для доступа к информации об их учетной записи.

В вашем приложении App Engine «example.appspot.com», если вы используете API, для которого требуется информация о пользователе, например API Календаря Google, необходимо, чтобы вы специально запрашивали у Пользователя разрешение на доступ к этой информации.

Получив одобрение, вы можете сохранить токены доступа и обновления в совершать будущие вызовы API от их имени без необходимости повторного согласия пользователя. Вы можете увидеть, как работает весь процесс OAuth, на Площадке OAuth 2.0.

Даже если вы автоматически вошли в систему, они все равно увидят страницу утверждения, запрашивающую у вашего приложения доступ к их информации. Разработка хака для принудительного утверждения доступа к информации пользователя от его имени является серьезным нарушением безопасности.


Вы можете взглянуть на новый поток Firebase Authentication, чтобы легко управлять работой Oauth вашего пользователя в ваше приложение App Engine.

person Jordan    schedule 24.01.2017
comment
Спасибо, Джордан - это старый вопрос, но с тех пор Google значительно улучшил этот процесс с помощью Firebase Auth. - person Pete; 25.01.2017