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

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

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

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

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

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

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

Ответ 1

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


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

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

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

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


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