2017-02-18 14 views
0

У меня есть веб-сайт, который я только что перешел с аутентификации Google AppEngine в OAuth. Первый раз, когда я вошел в на моем iPhone я получил уведомление о том, что OAuth в UIWebViews собирается останавливаться на апрель 20.Google OAuth в приложении iOS сохранен на главном экране

https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

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

Есть ли у кого-нибудь опыт или рекомендации, чтобы поделиться тем, как сделать этот пользователь приемлемым?

ответ

0

Ограничения, налагаемые Google и Apple, препятствуют легкому или изящному решению этой проблемы. Google не позволит вам использовать свою службу OAuth в браузере с песочницей. И браузер «песочницы» на iphone не передает никакие данные (например, файлы cookie или localStorage) с помощью не-изолированного браузера. Поэтому, если вы открыли новое окно для завершения обмена OAuth, нет возможности сообщить о завершении обмена и передать идентификатор пользователя обратно в сеанс браузера «песочницы».

Единственное решение, которое я смогу найти по этой проблеме, похоже на процесс регистрации Roku: разрешить пользователю генерировать одноразовый код в браузере, где она в настоящее время входит в систему, а затем вводить этот разовый код в браузер с песочницей. Я решил использовать 6-значный код, действительный в течение 2 минут, и добавил дополнительную логику, чтобы гарантировать, что код генерируется и потребляется одним и тем же лицом.

Это работает, но пользовательский интерфейс не так хорош, как стандартный поток OAuth. И я понимаю причину Google для ограничения OAuth из «изолированных» браузеров. Но это препятствует прогрессивным веб-приложениям, заставляя пользователя использовать дополнительные обручи, чтобы использовать PWA, который они сохранили на своем домашнем экране.