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»)?

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


person Nick    schedule 07.03.2017    source источник
comment
просто взгляните на этот пост, никаких других решений stackoverflow.com/questions/41829530/   -  person    schedule 31.10.2018


Ответы (2)


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

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

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

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

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

person DaImTo    schedule 15.03.2017

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

Так что - "Нет Web-App-Capable" для вас!

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

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

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

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

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

person CDenby    schedule 07.05.2017
comment
Я столкнулся именно с этой проблемой. Не нашел решения для аутентификации Safari Embedded. - person Möhre; 30.01.2018