Google OAuth для сайтов во встроенных браузерах

Google больше не разрешает встроенные веб-просмотры, так как это disallowed_useragent для входа в OAuth. В большинстве случаев это вполне нормально, и для этого есть обходной путь. Однако я столкнулся с ситуацией, когда это не позволяет веб-сайтам использовать реализацию OAuth веб-сервера.

Проблема:

PHP-сервер Nginx, использующий Google PHP SDK, с использованием их реализации O-Auth. Это прекрасно работает на всех, кроме встроенных браузеров. Обычно это нормально, однако, если пользователь пытается зарегистрироваться на нашем веб-сайте в приложении, которое использует встроенный браузер, мы получаем disallowed_useragent ошибка (см. рисунок внизу). Это не является проблемой в Android Facebook Messenger, но может быть воспроизведено на iPhone 7 Plus Facebook Messenger.

Текущее исследование:

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

Вопрос:

Как я могу реализовать Google Oauth, когда некоторые пользователи могут использовать эти встроенные браузеры, не заставляя пользователя предпринимать дополнительные ручные действия (например, открыть в Safari / Chrome)?

введите описание изображения здесь

12

Решение

Есть еще один сценарий, который вызывает проблемы.
Если у вас есть веб-приложение, а не нативное приложение со встроенным браузером, пользователь всегда может выбрать ярлык для HomeScreen в iOS.
Но когда они запускают ярлык HomeScreen для запуска приложения, оно удаляет «Safari / 6xx.x» из строки пользовательского агента.
Теперь Google видит это как «встроенный браузер» и запрещает доступ к OAuth.

Так что — «Нет возможности для веб-приложений» для вас!

Если вы отключите этот метатег:

<meta name="apple-mobile-web-app-capable" content="yes"/>

в iOS происходят две вещи:
Теперь веб-сайт открывается в окне браузера Safari вместо более чистого метода веб-приложения.
Веб-сайт использует полный пользовательский агент Safari, который позволит OAuth работать.

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

Я пытался найти способ подделать пользовательский агент, чтобы добавить в него версию safari, чтобы все работало в веб-приложениях на домашнем экране, но я не думаю, что смогу заставить это работать. Похоже, что Safari не позволяет вам изменять navigator.userAgent, и, кроме того, я не уверен, как он будет обрабатывать новые всплывающие окна в режиме WebApp.

6

Другие решения

Этот вопрос основан на мнении, но я выскажу свое мнение.

Как мне реализовать Google Oauth, когда некоторые пользователи могут использовать эти встроенные браузеры, не заставляя пользователя предпринимать дополнительные действия?

Вы не можете на самом деле. Если кто-то использует встроенный браузер в Facebook Messenger (встроенный браузер), чтобы открыть ссылку для аутентификации, он не будет работать. Насколько мне известно, нет никакого способа заставить или перевернуть Facebook Messenger или любое другое приложение, которое использует свой собственный встроенный браузер. Опять же, это только мое мнение, но есть много приложений, которые начали заставлять своих пользователей использовать эти встроенные браузеры. Можно задаться вопросом, насколько они безопасны и что лучше использовать реально установленный браузер. Как вы думаете, поэтому Google включил это для начала?

Я хотел бы не идти по пути обнаружения веб-стороны агента пользователя и заставлять пользователя открывать ссылку в Safari.

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

4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector