Это на самом деле довольно просто, в зависимости от мелких деталей вашего варианта использования.
Важным фактом является то, что, как только пользователь предоставил разрешение вашему приложению, ему не нужно будет повторно предоставлять его.Таким образом, вам не нужно «постоянно запрашивать авторизацию при загрузке в фоновом режиме».Однако единственным ограничением является то, что пользователь должен войти в систему Google, чтобы получить токен доступа.Обычно это не проблема, но ваше приложение должно иметь дело со сценарием, когда пользователь вышел из Google, и запросить логин.
Все подробности здесь https://developers.google.com/identity/protocols/OAuth2UserAgent
Я предлагаю избегать библиотеки Google JS, потому что (а) у нее есть свое собственное мнение о UX, (б) не было написано с учетом PWA, (в) есть проблемы на мобильном телефоне, и (г) закрытый источник, поэтому, когдаон ломается (как это иногда бывает), ваши пользователи мертвы в воде, пока Google не исправит это.На приведенной выше странице подробно описаны конечные точки OAuth, поэтому вы можете легко использовать их напрямую.Это дает дополнительное преимущество, заключающееся в том, что добавление других учетных записей облачного хранилища (AWS, Azure, Drop и т. Д.) - это всего лишь случай изменения URL-адреса конечной точки.
Архитектура, которую я использую в своей PWA, заключается в том, чтобы один раз получить приглашение PWA.(и только один раз) для авторизации, а затем сохраните адрес Gmail пользователя в localStorage.Затем у меня есть скрытый iframe, который опрашивает токен доступа один раз в час, используя адрес gmail в login_hint
.Это означает, что iframe никогда не требуется для представления какого-либо UX.Единственный раз, когда требуется UX, это для первоначальной аутентификации, которая, конечно, неизбежна, и один раз за сеанс, если пользователь вышел из Google.
Единственный другой крайний случай, с которым вы можете столкнуться, этопозволяя пользователю выбирать между несколькими учетными записями Google, например, личной учетной записью и учетной записью рабочего домена.
В более широком смысле, помните, что Google не создавал спецификацию OAuth, поэтому они мало что могут сделать, чтобы предоставитьальтернативное решение.На абстрактном уровне аутентификация требует присутствия одного из пользователей или безопасного хранилища для постоянного токена (например, на сервере или в безопасном хранилище, таком как Android).Даже если мы изобретем OAuth 3, это все равно будет так.