iOS应用中的Google OAuth已保存到主屏幕

时间:2017-02-18 06:31:51

标签: uiwebview google-oauth

我有一个网站,我刚从Google AppEngine身份验证转移到OAuth。我第一次登录iPhone时收到通知,UIWebViews中的OAuth将于4月20日停止。

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

我遇到了这个,因为我已经将我网站的快捷方式保存到我的iOS主屏幕。我该如何解决这个问题?我想我可以让登录按钮打开OAuth身份验证流程的新窗口,然后在身份验证完成时关闭新窗口。但对于用户已保存到主屏幕的应用程序而言,检测用户是否在UIWebView中(以便我可以确定是否打开新窗口)可能是不可靠的因为我试图匹配谷歌使用的检测结果。

是否有人有经验或指导分享如何使这种用户体验可以接受?

1 个答案:

答案 0 :(得分:0)

Google和Apple强制执行的限制措施无法轻松或优雅地解决此问题。 Google不会允许您在“沙盒”浏览器中使用其OAuth服务。并且iphone上的“沙盒”浏览器不与非沙盒浏览器共享任何数据(例如cookie或localStorage)。因此,如果您打开一个新窗口来完成OAuth交换,则无法通知交换完成并将用户ID传回“沙盒”浏览器会话。

我可以找到解决此问题的唯一解决方案类似于Roku注册过程:允许用户在她当前登录的浏览器中生成一次性代码,然后将该一次性代码输入到'沙盒'浏览器。我选择使用有效2分钟的6位数代码,并添加了一些额外的逻辑以确保代码由同一个人生成和使用。

这样可行,但用户体验不如标准OAuth流程。我理解Google将“OAbox”限制在“沙盒”浏览器中的原因。但它通过强制用户通过额外的箍来阻止渐进式网络应用程序,以便使用他们已保存到主屏幕的PWA。